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 system
ketergantungan scoped. The system
scoped 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-file
dengan localRepositoryPath
parameter:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<myGroup> \
-DartifactId=<myArtifactId> -Dversion=<myVersion> \
-Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>
Pembaruan: Tampaknya install:install-file
mengabaikan localRepositoryPath
saat 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 system
cakupan):
<dependency>
<groupId>your.group.id</groupId>
<artifactId>3rdparty</artifactId>
<version>X.Y.Z</version>
</dependency>
Ini adalah IMHO solusi yang lebih baik daripada menggunakan system
lingkup 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
...