Wir haben ein Profil, das maven-antrun-plugin
verwendet, um eine heruntergeladene JAR auszuführen.Wie kann man im maven-antrun-plugin eine Abhängigkeit vom Abhängigkeitsbereich des Plugins verwenden?
Exhibit A: (funktioniert)
Wir können die heruntergeladene JAR-Referenz die Eigenschaft mit ${maven.dependency.com.foobar.target-jar.jar.path}
(Can I use the path to a Maven dependency as a property?). In dieser Lösung sind die benutzerdefinierten Abhängigkeits- und Repository-Informationen jedoch nicht auf den Umfang des Profils beschränkt.
<project>
...
<repositories>
<repository>
<id>thirdparty</id>
<name>Third Party</name>
<url>
[URL for the repository that holds the target JAR]
</url>
<layout>default</layout>
</repository>
</repositories>
...
<dependencies>
<dependency>
<groupId>com.foobar</groupId>
<artifactId>target-jar</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
...
<profiles>
<profile>
<id>runJARprofile</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<inherited>false</inherited>
<executions>
<execution>
<id>run-jar</id>
<phase>package</phase>
<configuration>
<target name="runJar" fork="true">
<java jar="${maven.dependency.com.foobar.target-jar.jar.path}" />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
...
</project>
Exhibit B: (habe es nicht bekommen arbeiten)
Hier zogen wir die Abhängigkeit und Repository-Informationen in das Profil. Maven lädt das Artefakt erfolgreich herunter, aber wir wissen nicht mehr, wie man es nach Eigenschaften referenziert.
<project>
...
<profiles>
<profile>
<pluginRepositories>
<repository>
<id>thirdparty</id>
<name>Third Party</name>
<url>
[URL for the repository that holds the target JAR]
</url>
<layout>default</layout>
</repository>
</pluginRepositories>
...
<id>runJARprofile</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<inherited>false</inherited>
<dependencies>
<dependency>
<groupId>com.foobar</groupId>
<artifactId>target-jar</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>run-jar</id>
<phase>package</phase>
<configuration>
<target name="runJar" fork="true">
<java jar="${?????}" />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
...
</project>
Ich bin mir nicht sicher, ob ich das Problem/Frage verstehen. Wo ist die Eigenschaft 'maven.dependency.com.foobar.target-jar.jar.path' definiert? – Tunaki
@Tunaki Sieht aus wie das erste Beispiel, das es aus 'pom's' 'mit dem' $ {maven.dependency.com.foobar.target-jar.jar.path} 'gezogen hat, wenn das zweite Beispiel es will Verwenden Sie eine '', die der '' hinzugefügt wird. Ich denke, die Frage ist "Wie können Sie eine Abhängigkeit vom Abhängigkeitsbereich des Plugins im _maven-antrun-plugin_ verwenden?". –
mkobit
Basiert auf [diesem Link] (http://maven.apache.org/plugins/maven-antrun-plugin/examples/classpaths.html), das Eigenschaftsformat '$ {maven.dependency.com.foobar.target-jar .jar.path} ist veraltet, daher sollten wir stattdessen '$ {com.foobar: target-jar: jar}' verwenden. Versuchte das in Exhibit A und es funktioniert, aber immer noch nicht in Exhibit B. – thn929