Несколько репозиториев maven с известным неизвестным хостом - PullRequest
0 голосов
/ 08 мая 2018

Описание

Я настраиваю сборку maven для выполнения в двух разных средах: первая на моем локальном хосте, а вторая внутри кластера докеров с использованием jenkins.

Обе сборки будут использовать один и тот же файл pom.xml. Внутри файла pom.xml я ссылаюсь на частный репозиторий Nexus.

Хранилище Nexus находится внутри докерного кластера.

Оба URL-адреса, определенные внутри pom.xml, перенаправляют в один и тот же репозиторий Nexus.

Итак, чтобы получить доступ к репозиторию nexus с моего локального хоста, мы настроили наш частный DNS для разрешения «git.consignet.intranet» в репозитории nexus. А затем, чтобы получить доступ к репозиторию Nexus внутри докера, я могу использовать только его сервисное имя "nexus-repo".

Соответствующее содержимое файла pom.xml показано ниже:

<project>
    ...
    <repositories>
        <repository>
            <id>nexus-aws</id>
            <name>Nexus Amazon</name>
            <url>http://nexus.consignet.intranet/repository/maven-releases/</url>
        </repository>
        <repository>
            <id>nexus-cluster</id>
            <name>Nexus Inside Cluster</name>
            <url>http://nexus-repo/repository/maven-releases/</url>
        </repository>
    </repositories>
    ...
</project>

Задача

При сборке на моем локальном хосте я не могу получить доступ к репозиторию, используя его сервисное имя внутри докера для разрешения хосту.

При сборке внутри jenkins (внутри контейнера Docker) я не могу получить доступ к нашему DNS-серверу для разрешения URL.

Maven output

Maven выдает следующее сообщение об ошибке:

[ERROR] Failed to execute goal on project DB1ConsignetWebService: Could not 
resolve dependencies for project DB1ConsignetWebService:DB1ConsignetWebService:war:1.0-SNAPSHOT: 
Failed to collect dependencies at Consignet:jaxb-api:jar:2.2.7-facets-1.0.5:
Failed to read artifact descriptor for Consignet:jaxb-api:jar:2.2.7-facets-1.0.5: 
Could not transfer artifact Consignet:jaxb-api:pom:2.2.7-facets-1.0.5
from/to my-repo1 (http://nexus-repo/repository/maven-releases/): nexus-repo: 
Unknown host nexus-repo -> [Help 1]

Заключительные замечания

В каждой среде можно разрешить только один URL:

Внутри среды разработки я просто смогу разрешить днс "git.consignet.intranet".

В среде сборки jenkins я просто смогу разрешить днс "nexus-repo".

Вопрос

Можно ли игнорировать хранилище в maven, если это неизвестный хост? Если да, то как я могу его настроить?

1 Ответ

0 голосов
/ 08 мая 2018

Использовать профили:

<profiles>
    <profile>
         <id>dev</id>
         <repositories>
            <repository>
                <id>nexus-aws</id>
                <name>Nexus Amazon</name>
                <url>http://nexus.consignet.intranet/repository/maven-releases/</url>
            </repository>
        </repositories>
    </profile>

    <profile>
        <id>jenkins</id>
        <repositories>
            <repository>
                <id>nexus-cluster</id>
                <name>Nexus Inside Cluster</name>
                <url>http://nexus-repo/repository/maven-releases/</url>
            </repository>
        </repositories>
    <profile>
</profiles>

Затем выполните сборку с помощью mvn -Pjenkins или mvn -Pdev, в зависимости от среды, в которой вы находитесь. Теперь проблема (надеюсь) сводится к чтению флагов среды чтения.

...