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>
Другие вопросы по тегам