Ich habe Maven eine pom.xml-Datei (aus einem anderen Projekt kopiert und angepasst), und ich möchte die Verzeichnisstruktur für ein neues Projekt generieren. Welcher Befehl kann das?
Beachten Sie, dass ich im Web unzählige Beispiele gefunden habe, die erklären, wie mvn archetype: create verwendet wird, um eine pom.xml-Datei und die Verzeichnisstruktur zu erstellen, aber ich habe bereits eine pom.xml und möchte sie erstellen die darauf basierenden Verzeichnisse ohne Angabe von groupId, artifactId usw. in der Befehlszeile.
mvn archetype: create-from-project scheint auch eine pom.xml basierend auf einer anderen pom.xml (?) zu erstellen, aber ich möchte nur die Verzeichnisse. Danke im Voraus!
EDIT: Ich bin mir bewusst, dass dies kein "großes Problem" ist, da ich die Verzeichnisse manuell erstellen kann :) Ich habe es schon viele Male gemacht, und ich hatte immer das Gefühl, dass es einen intelligenten Weg geben muss. .
Nicht herablassend, aber:
mkdir -p src/main/Java
mkdir -p src/main/resources
mkdir -p src/test/Java
mkdir -p src/test/resources
(oder andere Verzeichnisse austauschen).
Ich kenne keinen Maven-Befehl, der diese Struktur für Sie erstellt, ohne eine neue POM-Datei zu erstellen.
Ich stimme zu, dass sollte eine Möglichkeit sein zu spezifizieren, dass Maven mein Pom selbst betrachten und daraus eine Projekt/Verzeichnisstruktur erzeugen sollte. Ich kenne keinen Weg, das zu tun, aber ich mache Folgendes:
Schritt 1: Verschieben Sie Ihre bereits erstellte Datei pom.xml an einen anderen Ort (maven beschwert sich, wenn Sie es bereits in dem Verzeichnis haben, in dem Sie den nächsten Befehl ausführen).
Schritt 2: Führen Sie in der neuen Befehlszeile das neue Maven-Projektverzeichnis aus:
mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DgroupId=my.package.path -DartifactId=myartifact
Sie müssen groupId und artifactId so bearbeiten, dass sie zu Ihrem Pom (Seufzer) passen. Dies erstellt jedoch die grundlegende Verzeichnisstruktur für Sie und eine Standard-Java-Klasse und einen Unit-Test.
Schritt 3: Verschieben/Kopieren Sie Ihre pom.xml in das Projektverzeichnis
Schritt 4: Führen Sie einen Maven-Befehl wie mvn clean package
oder mvn dependency:tree
aus, um den Download von Abhängigkeiten zu starten
Anmerkung: Ich füge diese Antwort hinzu, weil einige der vorherigen Antworten die Verwendung von mvn archetype:create
empfehlen, aber laut der Maven-Website dieses Ziel ist veraltet zugunsten von generate
. Und ich wollte zeigen, wie das unabhängig von Plugins von IDE oder IDE gemacht werden kann.
Es scheint mir, als würden Sie aus einem kleinen ein großes Problem machen.
Ich würde versuchen, mvn archetype:create-from-project
... zu verwenden und dann einfach die generierte POM-Datei durch die Originaldatei zu ersetzen.
Und wie Peter Lawrey vorschlägt, sind viele moderne IDEs in der Lage, eine Maven-Projektstruktur zu schaffen.
Analog zu Matts Antwort erstellen diese Zeilen die Standard-Ordnerstruktur für Maven unter Microsoft Windows. Führen Sie sie aus dem Verzeichnis aus, in dem sich Ihre pom.xml befindet:
mkdir -p src/main/Java
mkdir -p src/main/resources
mkdir -p src/test/Java
mkdir -p src/test/resources
Ich frage mich, warum es dafür kein Maven-Kommando gibt. Sie können entweder die obigen mkdir-Befehle ausführen oder stattdessen einen Archetyp verwenden, d. H. Den Schnellstart. Die Ordnerstruktur ist bereits in der Box enthalten.
Verwenden Sie das Maven Build Helper Plugin . Die Verwendung ist ziemlich unkompliziert. Konfigurieren Sie einfach die Plugins in Ihrem Pom und rufen Sie die entsprechenden MVN-Ziele auf.
Aus der Dokumentation:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.10</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>some directory</source>
...
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Ich benutze diesen Einzeiler:
touch pom.xml && mkdir -p src/main/Java && mkdir -p src/main/resources && mkdir -p src/test/Java && mkdir -p src/test/resources
Es wird auch eine leere pom.xml erstellt. Für den schnellen Zugriff habe ich es in meine Notizen aufgenommen. Ansonsten ist es ähnlich @Matt zu beantworten.
Öffnen Sie die Befehlszeile, wechseln Sie in das Verzeichnis mit der Datei pom.xml
und vorbei in die CMD:
echo This will create all required folders for maven project.
echo creating Application\Library sources
MD "src\main\Java"
echo creating Application\Library resources
MD "src\main\resources"
echo creating Resource filter files
MD "src\main\filters"
echo creating Web application sources
MD "src\main\webapp"
echo creating Test sources
MD "src\test\Java"
echo creating Test resources
MD "src\test\resources"
echo creating Test resource filter files
MD "src\test\filters"
echo creating Integration Tests (primarily for plugins)
MD "src\it"
echo creating Assembly descriptors
MD "src\Assembly"
echo creating Site
MD "src\site"
Maven kann es mit dem Quickstart-Archetyp für Sie generieren:
mvn archetype:generate \
-DgroupId=com.mydomain \
-DartifactId=my-project \
-DarchetypeArtifactId=maven-archetype-quickstart
Kopieren Sie dann Ihre vorhandene pom.xml in das gleiche Verzeichnis wie die generierte pom.xml.