Я хочу, чтобы файл jar находился в 3-й части библиотеки управления исходными кодами, и ссылка на него по относительному пути из файла pom.xml.
Если вы действительно этого хотите (поймите, если вы не можете использовать корпоративный репозиторий), то мой совет - использовать «файловый репозиторий», локальный для проекта, и не использовать system
зависимую область.Следует избегать области действия system
, во многих ситуациях такие зависимости не работают (например, при сборке), они вызывают больше проблем, чем выгод.
Итак, вместо этого объявите локальный для проекта репозиторий:
<repositories>
<repository>
<id>my-local-repo</id>
<url>file://${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
, поскольку ваша зависимость будет рассматриваться как добропорядочный гражданин (например, она будет включена в сборкуи так далее).
Теперь я должен упомянуть, что «правильный путь» для решения этой ситуации в корпоративной среде (возможно, не в данном случае) заключается в использовании корпоративного хранилища.