Ich möchte das Maven-Dependency-Plugin verwenden, um Artefakte aus allen Untermodulen meines Multi-Modul-Projekts in ein Verzeichnis zu kopieren, das relativ zum Stammverzeichnis des gesamten Projekts ist.
Das heißt, mein Layout sieht ähnlich aus, Namen geändert:
to-deploy/
my-project/
module-a/
module-b/
more-modules-1/
module-c/
module-d/
more-modules-2/
module-e/
module-f/
...
Und ich möchte, dass alle Artefakte aus den Zielverzeichnissen ihrer jeweiligen Module kopiert werden, my-project/../to-deploy
damit ich am Ende mit
to-deploy/
module-a.jar
module-b.jar
module-c.jar
module-d.jar
module-e.jar
module-f.jar
my-project/
...
Ich könnte es mit einem relativen Pfad in jedem Modul machen, wie folgt:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>install</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>jar</type>
<outputDirectory>../../to-deploy</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
Aber ich möchte lieber keinen relativen Pfad im <outputDirectory>
Element angeben . Ich würde so etwas bevorzugen ${reactor.root.directory}/../to-deploy
, aber ich kann so etwas nicht finden.
Außerdem würde ich es vorziehen, wenn es eine Möglichkeit gäbe, diese Konfiguration des Maven-Abhängigkeits-Plugins zu erben, damit ich sie nicht für jedes Modul angeben muss.
Ich habe auch versucht, eine benutzerdefinierte Eigenschaft vom Root-POM zu erben:
<properties>
<myproject.root>${basedir}</myproject.root>
</properties>
Aber wenn ich versuchte, ${myproject.root}
in den Modul- ${basedir}
POMs zu verwenden , würde sich das auf das basedir des Moduls auflösen.
Außerdem habe ich http://labs.consol.de/lang/de/blog/maven/project-root-path-in-a-maven-multi-module-project/ gefunden, wo vorgeschlagen wird, dass jeder Entwickler und vermutlich der kontinuierliche Der Integrationsserver sollte das Stammverzeichnis in einer Datei profile.xml konfigurieren, aber ich halte es nicht für eine Lösung.
Gibt es also eine einfache Möglichkeit, die Wurzel eines Projekts mit mehreren Modulen zu finden?