Saya ingin tabung berada di lib pihak ke-3 dalam kontrol sumber, dan menautkannya dengan jalur relatif dari file pom.xml.
Jika Anda benar-benar ingin ini (mengerti, jika Anda tidak dapat menggunakan repositori perusahaan), maka saran saya akan menggunakan "file repositori" lokal untuk proyek dan untuk tidak menggunakan sebuah systemketergantungan scoped. The systemscoped harus dihindari, dependensi tersebut tidak bekerja dengan baik di banyak situasi (misalnya dalam perakitan), mereka menyebabkan lebih banyak masalah daripada manfaat.
Jadi, sebagai gantinya, deklarasikan repositori lokal ke proyek:
<repositories>
<repository>
<id>my-local-repo</id>
<url>file://${project.basedir}/my-repo</url>
</repository>
</repositories>
Instal lib pihak ketiga Anda di sana menggunakan install:install-filedengan localRepositoryPathparameter:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<myGroup> \
-DartifactId=<myArtifactId> -Dversion=<myVersion> \
-Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>
Pembaruan: Tampaknya install:install-filemengabaikan localRepositoryPathsaat menggunakan versi 2.2 dari plugin. Namun, ini berfungsi dengan versi 2.3 dan yang lebih baru dari plugin. Jadi gunakan nama plugin yang memenuhi syarat untuk menentukan versi:
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>
dokumentasi maven-install-plugin
Akhirnya, nyatakan seperti ketergantungan lainnya (tetapi tanpa systemcakupan):
<dependency>
<groupId>your.group.id</groupId>
<artifactId>3rdparty</artifactId>
<version>X.Y.Z</version>
</dependency>
Ini adalah IMHO solusi yang lebih baik daripada menggunakan systemlingkup karena ketergantungan Anda akan diperlakukan seperti warga negara yang baik (misalnya akan dimasukkan dalam majelis dan sebagainya).
Sekarang, saya harus menyebutkan bahwa "cara yang tepat" untuk menghadapi situasi ini di lingkungan perusahaan (mungkin tidak demikian halnya di sini) adalah menggunakan repositori perusahaan.
localRepositoryPath...