webentwicklung-frage-antwort-db.com.de

Maven: Erstellen Sie eine Verzeichnisstruktur aus pom.xml

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. .

23
lbalazscs

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.

10
Matt

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.

15
quux00

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.

2
Stephen C

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.

2
Stimpson Cat

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>
0
pavakah

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.

0
Olaf

Ö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"
0
user648026

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.

0
cosbor11