Я хочу, чтобы файл jar находился в третьей части библиотеки управления исходными кодами, и связывался с ней по относительному пути из файла 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>
Это ИМХО лучшее решение, чем использование system
области видимости, поскольку ваша зависимость будет рассматриваться как хороший гражданин (например, она будет включена в сборку и т. Д.).
Теперь я должен упомянуть, что «правильный способ» справиться с этой ситуацией в корпоративной среде (может быть, и не здесь) - это использовать корпоративный репозиторий.
localRepositoryPath
...