Kavanozun kaynak denetiminde 3. parti bir lib'de olmasını ve pom.xml dosyasından göreli yolla bağlantı kurmasını istiyorum.
Bunu gerçekten istiyorsanız (anlayın, bir şirket deposunu kullanamıyorsanız), tavsiyem projenin yerelinde bir "dosya deposu" kullanmak ve systemkapsamlı bir bağımlılık kullanmamak olacaktır . systemKapsamına sahip (örneğin montaj olarak) bu tür bağımlılıkları birçok durumda iyi çalışmayan kaçınılmalıdır, bunlar faydadan çok sorunlara neden olmaktadır.
Bunun yerine, projeye yerel bir depo bildirin:
<repositories>
<repository>
<id>my-local-repo</id>
<url>file://${project.basedir}/my-repo</url>
</repository>
</repositories>
Üçüncü taraf lib'inizi install:install-fileşu localRepositoryPathparametreyle oraya kurun :
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<myGroup> \
-DartifactId=<myArtifactId> -Dversion=<myVersion> \
-Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>
Güncelleme: O anlaşılmaktadır install:install-filegörmezden localRepositoryPathEklentinin sürüm 2.2 kullanırken. Ancak, eklentinin 2.3 ve sonraki sürümleriyle çalışır. Sürümü belirtmek için eklentinin tam adını kullanın:
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>
maven-install-plugin belgeleri
Son olarak, başka bir bağımlılık gibi ilan edin (ancak systemkapsamı olmadan ):
<dependency>
<groupId>your.group.id</groupId>
<artifactId>3rdparty</artifactId>
<version>X.Y.Z</version>
</dependency>
Bu, IMHO'nun bir systemkapsamı kullanmaktan daha iyi bir çözümdür, çünkü bağımlılığınız iyi bir vatandaş gibi muamele görecektir (örneğin bir meclise dahil edilecektir).
Şimdi, bu durumla kurumsal bir ortamda (belki de durum böyle değil) başa çıkmanın "doğru yolunun" kurumsal bir depo kullanmak olacağını belirtmeliyim.
localRepositoryPath...