Chcę, aby słoik znajdował się w bibliotece stron trzecich pod kontrolą źródła, i link do niego poprzez względną ścieżkę z pliku pom.xml.
Jeśli naprawdę tego chcesz (rozumiesz, jeśli nie możesz korzystać z repozytorium korporacyjnego), to radzę użyć lokalnego repozytorium plików dla projektu i nie używaćsystem
zależności o zasięgu. system
Należy unikać zakresu, takie zależności nie działają dobrze w wielu sytuacjach (np. Podczas montażu), powodują więcej problemów niż korzyści.
Zamiast tego zadeklaruj repozytorium jako lokalne dla projektu:
<repositories>
<repository>
<id>my-local-repo</id>
<url>file://${project.basedir}/my-repo</url>
</repository>
</repositories>
Zainstalować trzeciej partii lib tam korzystając install:install-file
z localRepositoryPath
parametru:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<myGroup> \
-DartifactId=<myArtifactId> -Dversion=<myVersion> \
-Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>
Aktualizacja: Wygląda na to, że install:install-file
ignoruje localRepositoryPath
użycie wtyczki w wersji 2.2. Działa jednak z wersją 2.3 i późniejszymi wtyczek. Więc użyj w pełni kwalifikowanej nazwy wtyczki, aby określić wersję:
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>
Dokumentacja maven-install-plugin
Na koniec zadeklaruj to jak każdą inną zależność (ale bez system
zakresu):
<dependency>
<groupId>your.group.id</groupId>
<artifactId>3rdparty</artifactId>
<version>X.Y.Z</version>
</dependency>
Jest to IMHO lepsze rozwiązanie niż korzystanie z system
zakresu, ponieważ twoja zależność będzie traktowana jak dobry obywatel (np. Zostanie uwzględniona w zgromadzeniu i tak dalej).
Teraz muszę wspomnieć, że „właściwym sposobem” radzenia sobie z tą sytuacją w środowisku korporacyjnym (być może nie w tym przypadku) byłoby skorzystanie z repozytorium korporacyjnego.
localRepositoryPath
...