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 systemdépendance de portée. La systemporté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-filele localRepositoryPathparamè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-fileignore localRepositoryPathlors 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 systemporté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 systemporté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...