Обновите свойства maven после нового выпуска, используя плагин версий

У меня проблема с многомодульным проектом в maven/jenkins. Например, моя структура выглядит так:

---ProjectA
----pom.xml
--------ModuleA
---------pom.xml
--------ModuleB
---------pom.xml

---ProjectB
-----pom.xml

Например, ModuleA имеет зависимость для чего-то в ProjectB, которое определено в pom ModuleA, за исключением версии, которая определяется только как свойство и наследуется из раздела свойств ProjectA.

Я хочу автоматизировать процесс выпуска, чтобы избавиться от всего ручного обновления версий во всех помпах. Итак, после того, как я выпустил релиз ProjectB, я хотел бы поднять все ссылки в ProjectA.

EDIT Точнее, я хочу выпустить ProjectB, который должен включать выпуск ProjectA (из-за зависимостей), а в новых моментальных снимках ProjectA мне нужны ссылки на новейший ProjectB.

Версии плагинов maven делают это довольно хорошо, если указать зависимость и номер версии в одном и том же pom. Моя проблема, как вы можете видеть, заключается в том, что (я предполагаю), когда плагин версии пытается проверить поле свойства в pom ProjectA, свойство не может быть связано с зависимостью. И я предполагаю, что плагин версий смотрит на действующий pom, потому что он МОЖЕТ обнаружить, что зависимость в pom ModuleA должна быть обновлена. Он просто не может обновить его из-за того, что он там не определен.

Был бы очень признателен за решение, которое могло бы сохранить мои свойства в родительском pom.

Спасибо


person Jaco    schedule 14.06.2012    source источник
comment
Ну, ты не должен этого делать. У вас больше не будет повторяющихся сборок.   -  person Michał Kalinowski    schedule 14.06.2012
comment
Может я вас не правильно понял. ProjectA состоит из двух модулей. Все модули в проекте имеют одну и ту же версию, то есть версию ProjectA. Так как же у меня нет повторяющихся сборок. Да, и если я захочу изменить версию зависимостей, это также повлияет на всю версию ProjectAs.   -  person Jaco    schedule 14.06.2012


Ответы (1)


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

Итак, я думаю, что проблема заключается в том, что autoLinkItem ищет связь только в текущем файле, и если вы хотите, чтобы свойство было связано с зависимостью, не указанной в том же файле, можно было бы явно указать плагин в этом.

Как это:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>versions-maven-plugin</artifactId>
    <version>1.2</version>
    <configuration>
        <properties>
            <property>
                <name>basis.version</name>
                <dependencies>
                    <dependency>
                        <groupId>com.mycompany.app.basis</groupId>
                        <artifactId>ModuleBasis</artifactId>
                    </dependency>
                </dependencies>
            </property>
        </properties>
        <includeProperties>basis.version</includeProperties>
        <generateBackupPoms>false</generateBackupPoms>
        <allowSnapshots>true</allowSnapshots>
    </configuration>
</plugin>
person Jaco    schedule 14.06.2012
comment
Столкнулся с похожей проблемой. Это единственное решение, которое сработало. Понравился ответ. - person sumanr; 24.02.2016