Может ли maven-release-plugin проверять наличие версий SNAPSHOT в артефактах, загруженных через maven-dependency-plugin?

У нас есть проект A, который загружает артефакт из другого проекта B, выполняет над ним операцию и в результате выдает новый артефакт. Мы используем цель dependency: copy из maven-dependency-plugin, чтобы получить этот артефакт проекта B из нашего репозитория Maven.

Когда мы выполняем выпуск Maven, я ожидаю, что цель maven-release-plugin 'release: prepare' проверит все зависимости и выйдет из строя, если будут найдены какие-либо версии SNAPSHOT. Это работает для обычных зависимостей в наших тегах <dependencies><dependency>...</dependency></dependencies>, но не для артефактов «зависимости», скопированных maven-dependency-plugin.

Как (если вообще) я могу предоставить версии этих скопированных артефактов тесту подготовки maven-release-plugin и убедиться, что мы никогда не создадим выпуск Project A, включающий моментальный снимок проекта B?

Если контекст помогает, вот упрощенная версия настроек maven-dependency-plugin в нашем pom:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.8</version>
    <executions>
        <execution>
            <id>copy</id>
            <phase>process-sources</phase>
            <goals>
                <goal>copy</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>${ProjectBGroupID}</groupId>
                        <artifactId>${ProjectB}</artifactId>
                        <version>${ProjectBVersion}</version>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>

person user1246225    schedule 17.09.2014    source источник


Ответы (1)


Добавляя ответ на свой вопрос, я обнаружил, что мы можем предоставить номер версии maven-release-plugin, включив дополнительный элемент <dependency>...</dependency> (который относится к проекту B) в pom проекта A. Это правильно вызывает сбой, если мы пытаемся выпустить с моментальным снимком, но он также предоставляет Project B путь к классам проекта A. Мы можем немного ограничить это, включив <scope> "test" (который не позволяет классам B попадать в двоичный файл A), но это все равно оставляет модульные тесты A "запятнанными" B.

Я надеюсь, что у кого-то здесь есть лучшее решение, которое не фактически добавляет проект B в (любую часть) пути к классам проекта A.

person user1246225    schedule 17.09.2014
comment
Я также использую это решение с дополнительными ‹optional›. Другие отличия заключаются в том, что я использую цель копирования зависимостей. Таким образом, у цели копирования не будет явной версии. Тем не менее, все еще ищу ответ получше. - person ceilfors; 14.04.2015