Je veux que le pot soit dans une lib 3rdparty dans le contrôle de code source et que je le lie par chemin relatif depuis le fichier pom.xml.
Si vous le voulez vraiment (comprenez, si vous ne pouvez pas utiliser un référentiel d'entreprise), alors mon conseil serait d'utiliser un "référentiel de fichiers" local au projet et de ne pas utiliser une system
dépendance de portée. La system
portée doit être évitée, de telles dépendances ne fonctionnent pas bien dans de nombreuses situations (par exemple dans l'assemblage), elles causent plus de problèmes que d'avantages.
Donc, au lieu de cela, déclarez un référentiel local au projet:
<repositories>
<repository>
<id>my-local-repo</id>
<url>file://${project.basedir}/my-repo</url>
</repository>
</repositories>
Installez votre bibliothèque tierce là-dedans en utilisant install:install-file
le localRepositoryPath
paramètre:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<myGroup> \
-DartifactId=<myArtifactId> -Dversion=<myVersion> \
-Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>
Mise à jour: Il semble que l' install:install-file
ignore localRepositoryPath
lors de l'utilisation de la version 2.2 du plugin. Cependant, cela fonctionne avec la version 2.3 et ultérieure du plugin. Utilisez donc le nom complet du plugin pour spécifier la version:
mvn org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file \
-Dfile=<path-to-file> -DgroupId=<myGroup> \
-DartifactId=<myArtifactId> -Dversion=<myVersion> \
-Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>
documentation de maven-install-plugin
Enfin, déclarez-le comme toute autre dépendance (mais sans la system
portée):
<dependency>
<groupId>your.group.id</groupId>
<artifactId>3rdparty</artifactId>
<version>X.Y.Z</version>
</dependency>
C'est à mon humble avis une meilleure solution que d'utiliser une system
portée car votre dépendance sera traitée comme un bon citoyen (par exemple, elle sera incluse dans un assemblage, etc.).
Maintenant, je dois mentionner que la "bonne façon" de faire face à cette situation dans un environnement d'entreprise (peut-être pas le cas ici) serait d'utiliser un référentiel d'entreprise.
localRepositoryPath
...