Я хочу, щоб jar знаходився у вкладці 3rdparty у контролі джерела та посилався на нього відносним шляхом від файлу pom.xml.
Якщо ви дійсно хочете цього (зрозуміти, якщо ви не можете використовувати корпоративне сховище), то моя порада буде використовувати «сховище файлів» локальне для проекту і не використовувати в system
контекстну залежність. system
Scoped слід уникати таких залежностей не працюють добре в багатьох ситуаціях (наприклад , в зборі), вони викликають більше проблем , ніж користі.
Отже, замість цього оголосіть сховище, локальне для проекту:
<repositories>
<repository>
<id>my-local-repo</id>
<url>file://${project.basedir}/my-repo</url>
</repository>
</repositories>
Встановіть свою бібліотеку третьої сторони в ньому , використовуючи install:install-file
з localRepositoryPath
параметром:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<myGroup> \
-DartifactId=<myArtifactId> -Dversion=<myVersion> \
-Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>
Оновлення: виявляється, що install:install-file
ігнорує, localRepositoryPath
коли використовується версія 2.2 плагіна. Однак він працює з версією 2.3 і пізнішої версії плагіна. Тому використовуйте повністю кваліфіковане ім'я плагіна, щоб вказати версію:
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
Нарешті, заявіть про це як про будь-яку іншу залежність (але без system
сфери застосування):
<dependency>
<groupId>your.group.id</groupId>
<artifactId>3rdparty</artifactId>
<version>X.Y.Z</version>
</dependency>
Це IMHO краще рішення, ніж використання system
сфери, оскільки ваша залежність буде сприйматись як хороший громадянин (наприклад, вона буде включена в збори тощо).
Тепер я маю зазначити, що "правильним способом" вирішити цю ситуацію у корпоративному середовищі (можливо, це не так) було б використовувати корпоративний репозиторій.
localRepositoryPath
...