Maven Antrun et Dépendances
(Voir les modifications ci-dessous.)
La raison pour laquelle je ne peut pas utiliser le chemin de la classe, c'est parce que j'ai besoin de la gestion de certains non-bibliothèques java, et je suis à la compilation d'un non-projet java.
Je suis en train d'utiliser les dépendances maven dans un antrun appeler, à la suite de la documentation sur le maven site:
http://maven.apache.org/plugins/maven-antrun-plugin/examples/classpaths.html
Au bas de la page:
<property name="mvn.dependency.jar"
refid="maven.dependency.my.group.id:my.artifact.id:classifier:jar.path"/>
<echo message="My Dependency JAR-Path: ${mvn.dependency.jar}"/>
Je ne peux pas faire ce travail, peu importe comment j'essaie. J'ai essayé ${} autour de la refid contenu, j'ai essayé deux-points, points, etc.. comme séparateurs dans tous les sens je pense.
Quelqu'un peut me dire ce que refid devrait vraiment ressemblent pour certaines communes de la dépendance?
EDIT:
Merci pour votre réponse.
À l'aide de votre exemple SingleShot, j'ai le texte suivant:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>create-messages</id>
<phase>compile</phase>
<configuration>
<tasks>
<property name="build.compiler" value="extJavac"/>
<property name="compile_classpath" refid="maven.compile.classpath"/>
<property name="runtime_classpath" refid="maven.runtime.classpath"/>
<property name="test_classpath" refid="maven.test.classpath"/>
<property name="plugin_classpath" refid="maven.plugin.classpath"/>
<property name="log4j.jar" refid="log4j:log4j:jar"/>
<echo message="Where is the Log4J JAR?: ${log4j.jar}"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
</dependencies>
</plugin>
Et voici ce que j'obtiens quand exécuter mvn compile:
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Chat Component
[INFO] task-segment: [compile]
[INFO] ------------------------------------------------------------------------
Downloading: http://<redacted>/content/groups/public/log4j/log4j/1.2.14/log4j-1.2.14.pom
2K downloaded
Downloading: http://<redacted>/content/groups/public/log4j/log4j/1.2.14/log4j-1.2.14.jar
358K downloaded
[INFO] [antrun:run {execution: create-messages}]
[INFO] Executing tasks
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error executing ant tasks
Embedded error: Reference log4j:log4j:jar not found.
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Fri Oct 16 14:54:19 PDT 2009
[INFO] Final Memory: 7M/80M
[INFO] ------------------------------------------------------------------------
EDIT (2):
En regardant le code source lié j'ai décidé de courir "mvn -X compile" et grep pour "Ranger", qui s'avère un tas de sortie du journal où les choses sont plus stockées.
D'intérêt sont les faits que la dépendance je suis spécifiant explicitement ne s'affiche pas dans la liste, et que lorsque je passe à une touche de fonction sur l'une des entrées je ne voir, j'ai toujours l'erreur.
OriginalL'auteur Aaron H. | 2009-10-16
Vous devez vous connecter pour publier un commentaire.
Basé sur le code que SingleShot liés à, et le hasard piquer jusqu'à ce qu'il a travaillé, voici comment j'ai eu ce problème de "travail", (je le dis entre guillemets parce qu'il se sent très fragile.)
Ici est la façon de le faire correctement le travail:
Certaines choses importantes à noter: Vous ne peut pas utiliser la dépendance maven comme un refid dans l'établissement de la propriété ant. Vous devez utiliser ${} pour obtenir le maven var valeur.
Il semble que la dépendance doit être dans le top-niveau de dépendance, log4j une dépendance de la antrun plugin ne pas l'exposer à la plugin de toute façon que je peux voir.
Tous les séparateurs de chemin sont des points (.), pas de deux-points (:) c'est pourquoi j'ai vérifié ma propre réponse comme correcte.
OriginalL'auteur Aaron H.
Comme un additif à Aaron H. la réponse ci-dessus, j'ai dû mettre le plugin de la version 1.3 pour que cela fonctionne. Je l'utilise sans une version spécifique et s'1.1 (où rien ne semble fonctionner).
OriginalL'auteur Justin W
Sans un exemple de ce que vous avez tapé dans votre POM c'est difficile à dire, mais considérons un exemple concret. Disons que votre POM références log4j (groupId=log4j, artifactId=log4j). Je crois que c'est la façon dont vous le feriez référence que JAR dans votre Ant fichier:
Idéalement, vous ne devriez pas avoir de référence spécifiques des Pots, mais plutôt, de référence de l'ensemble du chemin de la portée appropriée, comme quelque rare documentation pour le plug-in indique.
Si vous avez encore des problèmes, veuillez envoyer la
<dependency>
tag pour un POM Maven dependency que vous utilisez et je peux essayer d'être plus précis.J'ai regardé la code du plugin pour confirmer.
OriginalL'auteur SingleShot
Cela fonctionne pour moi.
http://maven.apache.org/plugins/maven-antrun-plugin/examples/classpaths.html a l'explication de la façon de référence dépendances forme la fourmi classpath.
OriginalL'auteur ams
Il y a un bug dans la documentation. Le chemin d'accès doit être de la forme:
Donc la bonne clé pour votre log4j dépendance serait:
Notez également qu'il devrait être
value=
plutôt querefid=
, de sorte que l'ensemble de la propriété serait:OriginalL'auteur Rich Seller
J'ai déjà une fourmi et nous avons prévu de l'utiliser (nouveau) maven pour l'appeler. J'ai rencontré des problèmes pour que je puisse me souviens pas clair, mais il est lié à la classe les chemins, peut-être comme le vôtre.
Le problème est, la "fourmi" nous utilisons chaque jour est un script shell qui définit la classe les chemins, à la fois sur XNIX et Windows. Je n'ai pas comparé classe les chemins qu'il a fixé et celles disponibles à maven, mais mon test a montré qu'ils ne correspondent pas et la fourmi ne fonctionne pas avec certains chemins sont passés à partir de maven.
Ce que j'utilise est "exec-maven-plugin" et exécuter ant comme un programme externe avec certains arguments appliquée. C'est sûr que le travail, mais ajoute des dépendances.
OriginalL'auteur X.M.