Maven и зависимости НЕ в репозитории
У нас есть сторонняя библиотека зависимостей, которая доступна онлайн в форме jar, но ее нет в репозитории Maven или известно, что она находится в любом другом репозитории.
Как мы можем использовать pom.xml для автоматического извлечения этой зависимости на основе URL?
Мы не хотим хранить его в нашем репозитории Git, потому что это плохо.
Идея заключается в том, что когда люди проверяют проект, они могут использовать свою интеграцию IDE Maven (или просто инструменты командной строки mvn) для загрузки всех зависимостей. Поэтому мы хотели бы также иметь возможность загружать эту стороннюю зависимость, как и все в репозитории Maven.
Я не смог придумать ответ на этот вопрос на основе поисков - все решения, похоже, "сначала скачайте его и создайте локальное репо". Очевидно, что Maven можно загружать из Интернета, поскольку именно так он подключается к Maven Central и другим репозиториям. Поэтому я не понимаю, почему он не может загрузить произвольные URL, которые представляют пакеты в узнаваемых форматах.
1 ответ
В долгосрочной перспективе, лучшее решение - использовать свой собственный репозиторий артефактов, такой как Nexus, Artifactory или Archiva. Все они имеют функцию ручной загрузки, которую вы можете использовать для установки groupId, artifactId и version, чтобы вы могли затем обращаться к артефакту как обычно. Если вы хотите работать с очень низкими технологиями, я думаю, что вы можете просто разместить локальный репозиторий некоторого компьютера за Apache, если вы предоставите доступ для чтения / записи.
Затем вам нужно добавить свой новый репозиторий в файл Maven settings.xml, как описано здесь.
Maven использует координаты для навигации по репозиторию (который имеет определенную разметку) и проверки контрольных сумм артефактов для повреждения / фальсификации с использованием файлов метаданных в определенных местах репо. AFAIK это похоже на другие системы управления пакетами, такие как APT и RubyGems, которые используют манифесты репо и не разрешают произвольную загрузку URL.
Пропуск менеджера хранилища
Если вы действительно не хотите или не можете использовать менеджер репозитория, вы всегда можете загрузить артефакт и установить его вручную с помощью плагина установки Maven:
mvn install:install-file -Dfile=your-artifact-1.0.jar -DgroupId=org.some.group -DartifactId=your-artifact -Dversion=1.0
Однако вам придется делать это на каждой машине, на которой выполняется сборка, каждый раз, когда необходимо изменить артефакт.