Как запретить Maven загружать артефакты из репозитория, когда я просто обновляю pom-версию своего проекта

Я использую Maven как CI и JFrog Artifactory как хранилище моих собственных артефактов и как кеш. Все нормально работает. Я использую плагин Artifactory в Jenkins для запуска загрузки и выгрузки артефактов. Я не могу понять, как справиться со следующим вариантом использования. У меня многомодульный проект. В моем файле Settings.xml я определил несколько репозиториев моментальных снимков, плагинов и релизов. В моем локальном рабочем пространстве я обновил версию pom родительского проекта и его дочерних элементов. Затем я произвел локальную чистую установку. Это не удалось, потому что Maven пытался загрузить артефакты моего проекта из Artifactory, а они, конечно, не существуют, потому что я пытаюсь создать новую версию проекта. Как справиться с этим вариантом использования? Как настроить мой помп или настройки делать? Как это сделать в плагине Artifactory в Jenkins вольным способом?

У меня есть такие сообщения об ошибках:

10:23:28 Не удалось передать. Не удалось найти метаданные com.xxx.xxxx.xxx:my-parent-project:3.0.0-SNAPSHOT/maven-metadata.xml в xxx 10:23:50 [FATAL] Неразрешаемый родительский POM для com.xxx.xxxx.xxx:subpoject1:[unknown-version]: не удалось найти артефакт ..... и 'parent.relativePath' указывает на неправильный локальный POM @ строка 7, столбец 10 *

=====================================

pom конфигурация родительского pom

<modelVersion>4.0.0</modelVersion>
<groupId>com.xxx.xxx.xxx</groupId>
<artifactId>my-parent-project</artifactId>
<version>3.0.0-SNAPSHOT</version>
<packaging>pom</packaging>


<modules>
    <module>../subproject-1</module>
    <module>../subproject-2</module>
</modules>

==================================

конфигурация pom для подпроекта 1

    <artifactId>subproject-1</artifactId>

<parent>
    <groupId>com.xxx.xxx.xxx</groupId>
    <artifactId>my-parent-project</artifactId>
    <version>3.0.0-SNAPSHOT</version>
</parent>

======================================

Вот моя конфигурация settings.xml

<profile>
        <id>artifactory_profile</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <repositories>
            <repository>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
                <id>central</id>
                <name>libs-release</name>
                <url>http://xxxxxxxxxxxx:8081/artifactory/libs-release</url>
            </repository>
            <repository>
                <snapshots />
                <id>snapshots</id>
                <name>libs-snapshot</name>
                <url>http://xxxxxxxxxxxx:8081/artifactory/libs-snapshot</url>
            </repository>

            <repository>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <id>sing</id>
                <name>sing-virtual-repo</name>
                <url>http://xxxxxxxxxxxx:8081/artifactory/virtual-repo</url>
            </repository>               
        </repositories>

        <pluginRepositories>
            <pluginRepository>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
                <id>central</id>
                <name>plugins-release</name>
                <url>http://xxxxxxxxxxxx:8081/artifactory/plugins-release</url>
            </pluginRepository>
            <pluginRepository>
                <snapshots />
                <id>snapshots</id>
                <name>plugins-release</name>
                <url>http://xxxxxxxxxxxx:8081/artifactory/plugins-release</url>
            </pluginRepository>
        </pluginRepositories>
    </profile>

person mdh    schedule 15.02.2021    source источник


Ответы (1)


Если вы запустите clean install на родительском POM, все будет создано правильно.

person J Fabian Meier    schedule 15.02.2021
comment
Спасибо. Это то, что я делаю. Я запускаю mvn clean install в родительском каталоге pom. Путем поиска я обнаружил, что в файле settings.xml мы можем определить updatePolicy для снимков и выпусков. Поэтому я установил updatePolcy всегда для выпусков и никогда для моментальных снимков, удалил все артефакты и снова запустил чистую установку. Оно работает. Единственная проблема для меня заключается в том, что у меня есть некоторые внешние зависимости, которые являются снимками состояния, поэтому я не могу постоянно устанавливать политику f на никогда. - person mdh; 15.02.2021
comment
Это работает независимо от политики обновления. - person J Fabian Meier; 15.02.2021
comment
Другой вопрос / У меня такой же файл settings.xml в моей конфигурации jenkins. И даже если отключить плагин Artifactory для моей работы и выполнить чистую установку, у меня все равно будет проблема: - person mdh; 15.02.2021
comment
Пожалуйста, задайте новый вопрос о Stackoverflow. - person J Fabian Meier; 15.02.2021