Если бы был способ выполнить это лениво, только если артефакт не установлен, это могло бы быть идеально.
Я дам прямой ответ на ваш вопрос, даже зная, что этоприсущее уродство.Некоторое время я с успехом использовал рецепт обходного пути, но предупреждаю, что лично я не думаю, что это лучше системных зависимостей.Люди Maven считают злоупотребление профилями плохой практикой.
Создайте отдельный профиль для установки библиотек и привязки maven-install-plugin
, как предложено в вашем вопросе.
Вы можете активироватьпрофиль вручную с помощью -P myprofile
.Другой вариант, если вы хотите стать на 100% взломанным, - это адаптировать @vlf "check for file" для чистого Maven.Просто используйте триггер активации для профиля.Может быть что-то вроде этого ( ПРЕДУПРЕЖДЕНИЕ : не проверено):
<activation>
<file>
<missing>${user.home}/.myapp/.mylibisinstalled</missing>
</file>
</activation>
Если у вас есть общий набор библиотек, которые используются во многих проектах, просто создайте отдельный установщик артефакт с собственным pom.xml.Таким образом, вам не нужно носить одинаковые файлы JAR для нескольких проектов.
У меня лично есть install-extra-libs
артефакт с этой целью.Он содержит несколько jar-файлов в папке lib (а также несколько jar-файлов javadocs и исходного кода), некоторые зависимости от скрытых / защищенных паролем репозиториев, и даже загружает некоторые файлы напрямую, используя antrun: run и ANT получить задание .Для папки lib и загруженных jar существует несколько крупных install-file
ставок.Это уродливо и хакерски, но работает, когда вам обычно приходится многократно устанавливать один и тот же набор библиотек / javadocs в несколько репозиториев.
PROS:
- Вся хакерская атака происходит внутри этого артефакта.В моих проектах используется чистый синтаксис зависимостей.
- Нет дублирования файлов JAR.Нет файлов JAR в SCM.
- Я считаю, что это способ создания новых хранилищ Maven "на лету".
CONS:
- Это побеждает цель Maven.Если вы делаете это для общедоступных проектов с открытым исходным кодом, рассмотрите возможность загрузки его в общедоступный репозиторий и синхронизации с Maven Central ... Вот руководство , объясняющее, как это сделать из репозитория Sonatype.Это займет некоторое время, но по крайней мере другие люди могут извлечь выгоду из ваших усилий.
- Это побеждает цель Maven x2.Если вы не будете осторожны, вскоре вы потеряете информацию о том, какие зависимости находятся в Центральном хранилище.В большинстве моих проектов используется одна или несколько пользовательских установленных зависимостей, поэтому любой из них будет публичным.
Приветствия,