[java] Maven: ajouter une dépendance à un pot par chemin relatif



Answers

Utilisation de la portée du system ${basedir} est le répertoire de votre pom.

<dependency>
    <artifactId>..</artifactId>
    <groupId>..</groupId>
    <scope>system</scope>
    <systemPath>${basedir}/lib/dependency.jar</systemPath>
</dependency>

Cependant, il est conseillé d'installer votre fichier jar dans le référentiel et de ne pas le valider dans le SCM. Après tout, c'est ce que maven essaie d'éliminer.

Question

J'ai un pot de propriété que je veux ajouter à mon pom en tant que dépendance.

Mais je ne veux pas l'ajouter à un dépôt. La raison en est que je veux que mes commandes mvn compile habituelles telles que mvn compile , etc, fonctionnent correctement. (Sans demander aux développeurs de l'ajouter à un référentiel par eux-mêmes).

Je veux que le fichier jar soit dans une bibliothèque tierce partie dans le contrôle source, et liez-le par chemin relatif à partir du fichier pom.xml.

Cela peut-il être fait? Comment?




nous sommes passés à Gradle et cela fonctionne beaucoup mieux dans Gradle;). nous spécifions simplement un dossier dans lequel nous pouvons placer des jars pour des situations temporaires comme ça. Nous avons toujours la plupart de nos bocaux définis dans la section de gestion de la dépendance typique (c'est-à-dire la même chose que maven). C'est juste une dépendance de plus que nous définissons.

Donc, maintenant, nous pouvons simplement laisser tomber tout jar que nous voulons dans notre lib lib pour un test temporaire s'il ne s'agit pas d'un dépôt in maven quelque part.




Un petit ajout à la solution postée par Pascal

Lorsque j'ai suivi cette route, j'ai rencontré une erreur dans maven lors de l'installation de ojdbc jar.

[INFO] --- maven-install-plugin:2.5.1:install-file (default-cli) @ validator ---
[INFO] pom.xml not found in ojdbc14.jar

Après avoir ajouté -DpomFile, le problème a été résolu.

$ mvn install:install-file -Dfile=./lib/ojdbc14.jar -DgroupId=ojdbc \
   -DartifactId=ojdbc -Dversion=14 -Dpackaging=jar -DlocalRepositoryPath=./repo \
   -DpomFile=~/.m2/repository/ojdbc/ojdbc/14/ojdbc-14.pom



J'ai déjà écrit sur un modèle pour ce faire.

Il est très similaire à la solution proposée par Pascal, bien qu'il déplace toutes ces dépendances dans un module de référentiel dédié afin que vous n'ayez pas à le répéter partout où la dépendance est utilisée s'il s'agit d'une construction multi-module.






Related