J’ai une dépendance Maven dans mon pom.xml en tant que tel:
com.foo Bar 1.2.3
Et je voudrais utiliser le chemin du système vers le binary en tant que propriété (afin que je puisse le transmettre à un processus externe lancé par maven). Je peux le faire d’une manière maladroite:
En supposant que l’artefact com.foo:Bar:jar:1.2.3 est déclaré en tant que dépendance dans votre POM, la propriété suivante renvoie le chemin d’access au com.foo:Bar:jar:1.2.3 dans le référentiel local:
L’exécution de mvn process-resources génère la sortie suivante:
$ mvn process-resources
[INFO] Recherche de projets ...
[INFO] ----------------------------------------------- -------------------------
[INFO] Bâtiment q2359872
[INFO] segment de tâche: [ressources-processus]
[INFO] ----------------------------------------------- -------------------------
[INFO] [ressources: ressources {exécution: ressources par défaut}]
[INFO] Utilisation de l'encodage 'UTF-8' pour copier des ressources filtrées.
[INFO] ignore le ResourceDirectory / home / pascal / Projects / stackoverflow / q2359872 / src / main / resources non existant
[INFO] [antrun: lance {execution: default}]
[INFO] Exécution des tâches
[echo] /home/pascal/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar
[INFO] Tâches exécutées
[INFO] ----------------------------------------------- -------------------------
[INFO] CONSTRUIRE UNE RÉUSSITE
[INFO] ----------------------------------------------- -------------------------
[INFO] Temps total: 7 secondes
[INFO] Terminé à: Mar Mar 02 14:41:32 CET 2010
[INFO] Mémoire finale: 7M / 68M
[INFO] ----------------------------------------------- -------------------------
Voici une implémentation correcte, en utilisant l’ objective de propriétés maven-dependency-plugin , qui peut être utilisé n’importe où dans un pom:
4.0.0com.stackoverflowq23598722.0-SNAPSHOTq2359872${org.jmockit:jmockit:jar}org.jmockitjmockit1.11generate-sourcesorg.apache.maven.pluginsmaven-dependency-plugin2.3propertiesorg.codehaus.mojoexec-maven-plugin1.2execgenerate-sourcesechopath to jar=${org.jmockit:jmockit:jar}my.lib=${my.lib}
Et la sortie est …
jpyeron@black /projects/wkspc/tmp/foo $ /cygdrive/c/programs.x86_64/apache-software-foundation/apache-maven-3.1.1/bin/mvn [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building q2359872 2.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-dependency-plugin:2.3:properties (default) @ q2359872 --- [INFO] [INFO] --- exec-maven-plugin:1.2:exec (default) @ q2359872 --- path to jar= C:\Documents and Settings\jpyeron\.m2\repository\org\jmockit\jmockit\1.11\jmockit-1.11.jar my.lib= C:\Documents and Settings\jpyeron\.m2\repository\org\jmockit\jmockit\1.11\jmockit-1.11.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.032s [INFO] Finished at: Wed Sep 17 12:07:18 EDT 2014 [INFO] Final Memory: 10M/153M [INFO] ------------------------------------------------------------------------
Il y a un plugin qui pourrait être ce que vous cherchez … bitssortingngs.org (home) .
Si rien ne fonctionne, vous pouvez toujours utiliser gmaven pour plonger de manière MavenProject dans l’object MavenProject et obtenir vos informations d’artefact. Dans mon cas, l’artefact suivant a été déclaré dans un profil:
Pour obtenir son chemin et le mettre dans une propriété Maven, j’ai écrit le script gmaven suivant:
org.codehaus.gmavengmaven-plugin1.3get-neo4j-connector-rar-pathvalidateexecute artifact.getArtifactId()=='neo4j-connector' } // Now resolve dependency to produce an artifact // notice maven property interpolation doesn't do toSsortingng, so we have to do it ourselves project.properties['neo4j.connector.rarPath'] = neo4jConnector.getFile().getAbsolutePath() println "usable neoj4Connector can be found at "+project.properties['neo4j.connector.rarPath'] ]]>
C’est une sorte de méthode par force brute, mais cela fonctionne bien mieux que les solutions précédentes que j’ai vues là-bas.
Vous devez écrire un nouveau plug-in maven qui définit une valeur de propriété sur le chemin d’access entièrement résolu d’une dépendance. Le plugin maven-dependency ne le fera pas pour vous.
Il copiera votre dépendance quelque part et vous pourrez vous y référer par ce chemin.