Puis-je utiliser le chemin d'accès à un Maven de la dépendance d'une propriété?
J'ai une dépendance maven dans mon pom.xml en tant que tel:
<dependency>
<groupId>com.foo</groupId>
<artifactId>Bar</artifactId>
<version>1.2.3</version>
</dependency>
Et je voudrais utiliser le chemin d'accès du système binaire comme une propriété (pour que je puisse le transmettre à un processus externe qui est lancé par maven). Je peux le faire de façon un peu maladroite:
<properties>
<my.lib>${settings.localRepository}/com/foo/Bar/1.2.3/Bar.jar</my.lib>
</properties>
Mais je voudrais vraiment utiliser un mécanisme standard, telles que:
<properties>
<my.lib>${com.foo:Bar:1.2.3}</my.lib>
</properties>
J'ai quelque chose comme ça possible?
- Je suis un peu confus: si vous voulez faire référence
Bar.jar
comme un système de bibliothèque, vous devez spécifier<scope>system</scope><systemPath>${my.lib}</systemPath>
mais il semble que vous souhaitez utiliser${my.lib}
quelque part d'autre. Montrer l'exemple complet de la façon dont vous souhaitez utiliser${my.lib}
... - L'OP veut passer le chemin d'accès physique à une dépendance à un processus externe déclenché par maven.
Vous devez vous connecter pour publier un commentaire.
En supposant que le
com.foo:Bar:jar:1.2.3
artefact est déclarée dépendance dans votre POM, la propriété suivante renvoie le chemin du pot dans le dépôt local:Mise à jour: Ici est une simple POM de le démontrer:
De course
mvn process-resources
produit la sortie suivante:maven-antrun-plugin
(voir jira.codehaus.org/browse/MANTRUN-110). S'il vous plaît, de fournir un ensemble de pom exemple, comme je suppose que vous vous référez pas<project><properties>
mais d'autres propriétés.maven-antrun-plugin
. Et vous l'avez montré dans votre exemple, de grandes! Et à partir de l'exemple, je vois que c'estmaven-antrun-plugin
fonctionnalité spécifique, c'est à dire si je veux remplacer${my.lib}
variable pour les ressources (sans utiliser un autre pugin) - je ne peux pas le faire, non?maven-antrun-plugin
sources, qui ne font que tromper. C'est donc antrun fonctionnalité spécifique, et bmargulies est également à droite, en disant: vous pouvez faire de même dans votre plugin personnalisé.maven-antrun-plugin v1.3
et pas avecmaven-antrun-plugin v1.1
, donc également commander la version la plus récente pour cette fonctionnalité.Ici est une mise en œuvre correcte, à l'aide de la maven-dépendance-les propriétés d'un plugin objectif, qui peut être utilisé n'importe où dans un pom:
Et la sortie est...
Il y a un plugin qui pourrait être ce que vous cherchez... bitstrings.org (à la maison).
Si aucun de la partie supérieure du travail, vous pouvez toujours utiliser gmaven à agressively plonger dans
MavenProject
objet et obtenir votre artefact infos. Dans mon cas, j'ai eu la suite d'artefact déclaré dans un profil :Pour obtenir son chemin et de le mettre dans une propriété maven, j'ai écrit ce gmaven script :
C'est une sorte de brute-force, mais il FAIRE le travail beaucoup mieux que la précédente solutions que j'ai vu là-bas.
Vous avez besoin d'écrire un nouveau plugin maven qui définit la valeur d'une propriété entièrement résolue dans le chemin de la dépendance. Le maven-dépendance-plugin de ne pas le faire pour vous.
Il copie votre dépendance à quelque part et puis vous pouvez le désigner par ce chemin d'accès.