Maven: как настроить мой pom.xml, чтобы он мог получать зависимости через HTTP и развертывать модуль через FTP
Я пытаюсь настроить pom.xml для одного из моих проектов. И я не могу понять, как заставить его получать зависимости через HTTP, но развернуть новые артефакты через FTP.
Вот ситуация. У меня есть многомодульный проект, над которым я работаю в сотрудничестве с другими людьми. Я также случайно арендовал дешевый веб-сервер, который позволял бы мне делиться версиями и снимками некоторых из моих модулей через репозиторий maven.
Я хочу, чтобы развертывание в хранилище было аутентифицированным (чтобы только авторизованные люди могли писать в него) и было выполнено через FTP.
С другой стороны, я хочу, чтобы каждый мог загрузить опубликованную версию артефактов анонимно через HTTP.
Пока единственное, что я обнаружил, - это добавить следующий раздел в мой pom.xml.
<distributionManagement>
<snapshotRepository>
<id>my.repo.snapshots</id>
<name>My Repository - Snapshots</name>
<url>${url}/snapshots</url>
</snapshotRepository>
<repository>
<id>my.repo.releases</id>
<name>My Repository - Releases</name>
<url>${url}/releases</url>
</repository>
</distributionManagement>
Проблема с этой настройкой заключается в том, что она не позволяет мне выбрать FTP для загрузки и HTTP для загрузки.
Есть ли способ настроить мой pom.xml для этого?
1 ответ
Оказывается, решение было прямо под моим носом. Репозитории для развертывания артефактов действительно настраиваются через <distributionManagement/>
, но хранилища для извлечения артефактов настраиваются через <repositories>
элемент в <profiles>
раздел.
Моя рабочая конфигурация pom.xml теперь включает в себя:
<distributionManagement>
<repository>
<id>deploy.releases</id>
<name>Repository - Releases</name>
<url>ftp://ftp.domain.com/releases/</url>
</repository>
<snapshotRepository>
<id>deploy.snapshots</id>
<name>Repository - Snapshots</name>
<url>ftp://ftp.domain.com/snapshots/</url>
</snapshotRepository>
</distributionManagement>
<profiles>
<profile>
<id>project.default</id>
<activation>
<property>
<name>!skipProjectDefaultProfile</name>
</property>
</activation>
<repositories>
<repository>
<id>repo.releases</id>
<url>http://maven.domain.com/releases/</url>
</repository>
<repository>
<id>repo.snapshots</id>
<url>http://maven.domain.com/snapshots/</url>
</repository>
</repositories>
</profile>
</profiles>
Кроме того, мой файл settings.xml содержит информацию об аутентификации для FTP
<servers>
<server>
<id>deploy.releases</id>
<username>user</username>
<password>pass</password>
</server>
<server>
<id>deploy.snapshots</id>
<username>user</username>
<password>pass</password>
</server>
</servers>