Nate deckte diesen größtenteils ab, aber ich gebe konkrete Beispiele.
Hier ist, wie Sie Ihre Verzeichnisstruktur sollte wie folgt aussehen:
pom.xml
src/main/assembly/assembly.xml
core/pom.xml
core/src/main/java/...
core/src/test/java/...
examples/pom.xml
examples/src/main/java/...
In der Basis pom, werden Sie Ihre Submodule bezeichnen wie folgt:
<modules>
<modules>core</modules>
<modules>examples</modules>
</modules>
Angenommen, Ihre Basis groupId ist „com.company .Beispiel“und Ihre artifactId ist‚xy‘, dann wird Ihr Modul Poms mit den folgenden (Einstellung für Namen und Versionen, natürlich) beginnen:
<parent>
<groupId>com.company.example</groupId>
<artifactId>xy</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<groupId>com.company.example</groupId>
<artifactId>xy-core</artifactId>
<version>1.0.0-SNAPSHOT</version>
die Montage läuft im Basisprojekt Um sicher zu gehen, sind die folgendes in Ihrer Build-Konfiguration:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>jar</goal>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
die assembly.xml selbst wi:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.1</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
</plugin>
, auch einen separaten Behälter für die Testklassen, fügen Sie diese auf den Kern/pom.xml-Datei zu erstellen werde so aussehen:
<assembly>
<id>assembly</id>
<formats>
<format>tar.gz</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<moduleSets>
<moduleSet>
<binaries>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
<outputDirectory>lib</outputDirectory>
</binaries>
</moduleSet>
</moduleSets>
</assembly>
Ich vermisse wahrscheinlich ein paar Dinge hier, aber das ist die allgemeine Idee.
Ich stimme nicht zu, dass diese Frage nicht konstruktiv ist - ich fand die Antworten hilfreich w/r/t die Optionen, die Sie in Maven Konventionen zur Verfügung haben. Denken Sie, dies könnte ein Fall von über aggressiver Mäßigung sein. – cwash