Как обновить версию зависимого родственного модуля с помощью плагина Versions Maven - PullRequest
3 голосов
/ 31 августа 2010

У меня проблема с обновлением зависимой версии зависимых родственных проектов.

Моя упрощенная настройка проекта следующая.

root
|--parent
|--tool-core
|--tool
|--functional-tests

Родительский проект содержит все глобальные свойства и зависимостиуправление.Функциональные тесты зависят от инструмента, а инструмент зависит от основной части инструмента.Корень pom.xml только агрегирует (указывает, включены ли функциональные тесты), а родительский проект является родительским для всех проектов.Я не знаю, является ли это тривиальным, но родительский элемент не включен в агрегацию, поскольку он уже является родительским для каждого дочернего проекта.

Теперь моя проблема заключается в том, если я изменю версию инструментас versions:set.Версия инструмента изменена, но никакой зависимости от инструмента нет.Как мне это сделать?Я уже пробовал более или менее случайным образом другие цели и пытался прочитать руководство.

Я уже пытался использовать раздел <dependencyManagement> и использовать свойство для версии в родительском файле, но это не так.получить обновление до новой версии.

Любая помощь действительно приветствуется.

Добавление

Я получаю сообщение "Игнорирование зависимости от реактора: com.tool: tool: jar: null: 1.2.3 "в лучшем случае.Это когда я пытаюсь versions:use-latest-releases.Тем не менее, versions:display-dependency-updates показывает, что существует обновление для «локальной зависимости» (функциональные тесты зависят от инструмента).

Обновление

Кажется, что Mavenищите новые версии из репозиториев, в том числе локальные, которые кажутся совершенно очевидными, когда я думаю об этом.Однако это означает, что инструмент должен быть собран и установлен в локальный репозиторий перед обновлением зависимостей.

Мне только интересно, является ли это правильным способом иметь интеграционные тесты в качестве собственного проекта.Я надеялся, что будет способ обновить версию сразу.

Обновление

В основном у меня есть следующие настройки.Зависимость версии от functional-tests tool определяется проектом parent.Я опустил tool-core, так как он может обрабатываться как часть tool.

root:

<groupId>com.somecompany</groupId>
<artifactId>x-reactor</artifactId>
<packaging>pom</packaging>
<version>1.0</version>

<profiles>
    <profile>
        <id>cli</id>
        <modules>
            <module>tool</module>
        </modules>
    </profile>
    <profile>
        <id>deploy</id>
        <modules>
            <module>tool</module>
            <module>functional-tests</module>
        </modules>
    </profile>
</profiles>

parent:

<groupId>com.somecompany</groupId>
<artifactId>x-parent</artifactId>
<packaging>pom</packaging>
<version>1.0</version>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.somecompany</groupId>
            <artifactId>tool</artifactId>
            <version>3.2.3</version>
        </dependency>
    </dependencies>
</dependencyManagement>

tool:

<parent>
    <groupId>com.somecompany</groupId>
    <artifactId>x-parent</artifactId>
    <version>1.0</version>
    <relativePath>../parent/pom.xml</relativePath>
</parent>

<groupId>com.somecompany</groupId>
<artifactId>tool</artifactId>
<packaging>jar</packaging>
<version>3.2.3</version>

функциональные тесты:

<parent>
    <groupId>com.somecompany</groupId>
    <artifactId>x-parent</artifactId>
    <version>1.0</version>
    <relativePath>../parent/pom.xml</relativePath>
</parent>

<groupId>functional-tests</groupId>
<artifactId>functional-tests</artifactId>
<version>0.1</version>
<packaging>pom</packaging>

<dependencies>
    <dependency>
        <groupId>com.somecompany</groupId>
        <artifactId>tool</artifactId>
    </dependency>
</dependencies>

Ответы [ 2 ]

6 голосов
/ 18 октября 2012

Я столкнулся с той же проблемой в настоящее время с целью "use-Releases" и был очень рад, что плагин версий (только сейчас?) Поддерживает этот случай с помощью параметра " excludeReactor = false "! : -)

2 голосов
/ 01 сентября 2010

Очевидно, нужно выполнить цель versions:use-latest-versions по тому же пути, где находится файл pom.xml, который нужно обновить.Я решил это, переместив версии в родительский проект и обновив только это.Я не слишком доволен этим решением, так как кажется, что плагин версий не поддерживает понижение версии.Кроме того, новая версия запрашивается из (локального) репозитория, что означает, что инструмент должен быть собран перед обновлением версии.Я думаю, что это была моя проблема изначально.

Вот сценарий для решения этой проблемы:

#!/bin/bash

if [[ $# -lt 1 ]]; then
    echo "Usage: $0 [version number]"
    exit 1
fi

function revert_version() {
    mvn -Pall versions:revert > /dev/null
    echo "ERROR: Failed updating the version"
    cat mvn_out.txt
    exit 1
}

v=$1
profile=cli
echo "Updating the version to $v..."
mvn -P$profile versions:set -DnewVersion=$v -DartifactId=tool -q
[ $? -eq 0 ] || revert_version

echo "Building the tool..."
mvn -P$profile install > /dev/null
[ $? -eq 0 ] || revert_version

echo "Updating the dependencies..."
mvn versions:use-latest-versions -Dincludes=com.somecompany:* -f parent/pom.xml -q
[ $? -eq 0 ] || revert_version
mvn -Pall versions:commit -q
[ $? -eq 0 ] || revert_version
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...