Почему Maven не распознает пользовательское хранилище для pom с родителем, использующим Jenkins? - PullRequest
1 голос
/ 23 апреля 2020

У меня есть следующий родительский pom ...

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>...</groupId>
    <artifactId>core</artifactId>
    <packaging>pom</packaging>
    <version>0.0.12-SNAPSHOT</version>
    ...
</project>

Это устанавливается в пользовательский репозиторий артефактов. Далее я хочу использовать его, поэтому я создаю pom как этот ...

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>...</groupId>
    <artifactId>child</artifactId>
    <packaging>jar</packaging>
    <version>0.0.1-SNAPSHOT</version>
    ...
    <parent>
        <groupId>...</groupId>
        <artifactId>core</artifactId>
        <version>0.0.11</version>
    </parent>
</project>

Вся информация о хранилище хранится в настройках. xml. Однако когда jenkins запускает ...

mvn -f pom.xml --batch-mode help:effective-pom -Drevision=DERIVED -Doutput=effectivePom.xml -s ./build/java/settings.xml

Он не использует пользовательское репо и вместо этого использует репо по умолчанию. Что мне не хватает? Есть ли какие-то предварительные шаги, которые необходимо выполнить для настройки репо для родителя?

Настройки. xml

<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
    <servers>
        <server>
            <id>CUSTOM</id>
            <username>...</username>
            <password>...</password>
        </server>
        <server>
            <id>CUSTOM-SNAPSHOT</id>
            <username>...</username>
            <password>...</password>
        </server>
    </servers>
    <profiles>
        <profile>
            <id>mine</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <pluginRepositories>
                ...
            </pluginRepositories>
            <repositories>
                <repository>
                    <id>CUSTOM-SNAPSHOT</id>
                    <url>...</url>
                    <releases><enabled>false</enabled></releases>
                    <snapshots><enabled>true</enabled></snapshots>
                </repository>
                <repository>
                    <id>CUSTOM</id>
                    <url>...</url>
                    <releases><enabled>true</enabled></releases>
                    <snapshots><enabled>false</enabled></snapshots>
                </repository>
                <repository>
                    <id>main</id>
                    <url>...</url>
                    <releases><enabled>true</enabled></releases>
                    <snapshots><enabled>false</enabled></snapshots>
                </repository>
            </repositories>
        </profile>
    </profiles>
    <activeProfiles>
        <!-- make the profile active all the time -->
        <activeProfile>mine</activeProfile>
    </activeProfiles>
</settings>

Я также выполнил cat build/java/settings.xml на работе Жюля и файл показывается, как и ожидалось.

Обновление 2

Я попытался запустить maven с параметром -X, чтобы увидеть, откуда что происходит, и это заставило меня заметить что-то ...

[DEBUG] Using mirror main (...main url) for custom (... custom url).

Похоже, что где-то неправильно установлено зеркало, как мне это убрать? Я дважды проверил свой код и нигде не вижу зеркала.

1 Ответ

0 голосов
/ 23 апреля 2020

Проблема оказалась зеркалом по умолчанию, установленным на сервере Jenkins (в настройках. xml или чем-то еще, что он использовал). Ключом была опция -X на maven, это показывало отображение зеркал. Поэтому, чтобы решить эту проблему, я переопределил его, чтобы удалить пользовательское хранилище ...

<mirrors>
    <mirror>
        <!--This sends everything else to /jpmc-public -->
        <id>main</id>
        <mirrorOf>*,!CUSTOM</mirrorOf>
        <url>... main url</url>
    </mirror>
</mirrors>

Я добавил это только в удаленные настройки. xml, так как это сломало бы все локально. Однако, похоже, это решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...