#maven #project #maven-reactor
#maven #проект #maven-reactor
Вопрос:
Есть проект с разными модулями и зависимостями, и все они необходимы для установки mvn clean один за другим в определенной последовательности.И у них разные родители, и это нельзя изменить. Теперь, как я могу автоматизировать этот процесс с помощью maven reactor.Поэтому, просто выполнив «mvn clean install» только один раз, вы выполните одну и ту же операцию со всеми модулями в заданной последовательности.
Комментарии:
1. Это многомодульная сборка?
2. ну, все, что я знаю, это то, что есть 20 модулей, которые, как ожидается, будут работать, только если они установлены в чистом виде в заданной последовательности.
3. Если у вас есть родительский pom, который содержит
<modules>..</modules>
и все модули (дочерние элементы) определяют родителя для ранее упомянутого родителя, вы должны иметь возможность создавать их за один раз из родительского местоположения с помощьюmvn clean package
. Не должно быть необходимостиmvn clean install
.. вы должны определить зависимости между модулями.4. @khmarbaise в этом проблема … дочерние репозитории организации являются родительскими. общего родительского pom нет.
5. Но теперь это называется агрегатором, который должен работать. Просто вызвать
mvn clean package
из корневого модуля?
Ответ №1:
Возможно, вы можете работать с несколькими модулями https://maven.apache.org/guides/mini/guide-multiple-modules.html
Комментарии:
1. можете ли вы подробнее рассказать об этом?
2. на самом деле я создал файл pom с <modules>, но он показывает, что reactor содержит ошибку разных версий.
Ответ №2:
Вы можете создать нового родителя для всех других родителей, этот родитель будет агрегатором проектов для всех других модулей (другие родители), в этом новом родителе вы можете заказать модули по своему усмотрению
<?xml version="1.0" encoding="UTF-8" ?>
<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>build-all</groupId>
<artifactId>build-all</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<modules>
<module>../proj1/pom.xml </module>
<module>../proj2/pom.xml </module>
.
.
</modules>
</project>
Комментарии:
1. эти родители являются репозиториями организации, и я думаю, что это невозможно сделать так, как вы предложили это сделать.
2. У меня была такая же проблема, и я исправил ее, используя эту идею
3. как я могу создать родительский pom для тех репозиториев, которых нет в моей системе в начале? Я сказал вам, что у модулей есть некоторые репозитории, которые не являются частью project, являются родительскими для этих модулей. И если я попробую код на скриншоте, он выдает правило 0: org.apache.maven.plugins.enforcer. Сбой Reactor Moduleconvergence с сообщением: реактор содержит разные версии. Реактор недействителен