In Maven-Projekten werden die für Compile, Test oder Runtime benötigten Libaries als Dependencies über ihre Maven-Koordinaten groupId
, artifactId
und version
angemeldet. Im Build-Verlauf werden die JAR-Files dann per Download aus Maven-Repositories im lokalen Repository des Users bereit gestellt.
In manchen Fällen benötigt man für bestimmte Build-Schritte den vollen Pfad der Libraries im lokalen Repository, z. B. um ein solches JAR-File als Java-Agent beim Start von Unit-Tests anzumelden. Das gelingt mit Hilfe der Goals properties
des Dependency-Plugins: Es setzt für jede Dependency des Projekts eine Property namens groupId:artifactId:type[:classifier]
auf den vollen Pfad des JAR-Files im lokalen Repository.
Ein Beispiel:
<project ... > <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <goals> <goal>properties</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>org.eclipse.persistence.jpa</artifactId> <version>2.5.2</version> </dependency> <dependencies>
Der volle Pfad der Eclipselink-Bibliothek im lokalen Repository steht nun in der Property org.eclipse.persistence:org.eclipse.persistence.jpa:jar
zur Verfügung. Um sie als Agent beim Start von Tests mit Hilfe des Surefire-Plugins zu nutzen, muss somit nur noch die Property argLine
passend gesetzt werden:
<properties> <argLine>-javaagent:${org.eclipse.persistence:org.eclipse.persistence.jpa:jar}</argLine> </properties>