GEDOPLAN

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>