4 Stimmen

Maven pom.xml - Projekt-Aggregation

Wir haben ein Aggregations-.pom eingerichtet, das mehrere einzelne Module enthält, ähnlich wie das Maven-Dokumentation :

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1</version>
  <packaging>pom</packaging>

  <modules>
    <module>my-module</module>
    <module>my-module-2</module>
  </modules>
</project>

Gibt es eine Möglichkeit, die Artefakte aus den Builds (.JAR-Dateien) aus diesen beiden Modulen in ein gemeinsames "dist"-Verzeichnis nach der Erstellung zu bekommen? Ich wollte nicht auf Ausgabeverzeichnis für die einzelnen Module von "my-module/target" anpassen, da sie auch separat gebaut werden können.

Ich bin ein Maven-Neuling, also bin ich sicher, dass es einen einfachen Weg gibt, dies zu tun, den ich übersehe.

2voto

Pascal Thivent Punkte 548176

Gibt es eine Möglichkeit, die Artefakte aus den Builds (.JAR-Dateien) aus diesen beiden Modulen in ein gemeinsames "dist"-Verzeichnis nach der Erstellung zu erhalten?

Le site Maven Assembly Plugin kann dies tun, es ist sehr leistungsfähig und flexibel. Aber Leistung und Flexibilität bedeuten auch, dass es nicht das trivialste Plugin in der Anwendung ist. In Ihrem Fall würde die Idee sein, eine dir Verteilung aus einer moduleSets und Sie müssen eine benutzerdefinierte Assembly-Deskriptor dafür.

Ich schlage vor, mit dem Kapitel 8.2. Grundlagen der Montage des Maven-Buches zu lesen und dem Kapitel "Maven" besondere Aufmerksamkeit zu schenken 8.5.5. moduleSets Abschnitte .

1voto

MattGWagner Punkte 1146

Nachdem ich mir die Links der anderen Antworten durchgelesen habe, werde ich jetzt folgendes versuchen:

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>

            <executions>
                <execution>
                    <id>copy-jars</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <resources>
                            <resource>
                                <directory>../src/my-module/target</directory>
                                <includes>
                                    <include>**/my-module*.jar</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>

Das ist nicht gerade schön, aber während ich das Assembly-Plug-in für eine mögliche längerfristige Lösung recherchiere, wird dies genügen.

0voto

Aravind Yarram Punkte 76365

Ich schätze, das Maven Assembly Plugin kann dies tun

0voto

Eugene Ryzhikov Punkte 16656

Wie @Pangea schon sagte, wird das Assembly-Plugin das erledigen. Einfach ausführen assembly:assembly Ziel mit angemessener Einstellung outputDirectory Parameter.

mehr Infos unter http://maven.apache.org/plugins/maven-assembly-plugin/assembly-mojo.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X