работа с ошибкой maven: проект «XYZ» дублируется в реакторе

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

Кто-нибудь работал над этим? Спасибо.


person Brian Harris    schedule 25.02.2009    source источник
comment
проект с ошибкой должен находиться в одной иерархии. Для меня это было передано из нескольких модулей.   -  person Gaurav    schedule 06.02.2020


Ответы (5)


Я не думаю, что вы должны делать это. (Вы можете попробовать определить профиль — скажем, профиль полной сборки, где вы убедитесь, что каждый модуль скомпилирован только один раз, другой профиль, который добавляет дополнительные модули при выполнении подсборки.)

Но вам лучше пойти по пути maven - каждый проект должен включать в себя в качестве модулей только каталоги из своего собственного каталога, например. только прямые дети.

У Maven есть некоторые неписаные неявные предположения, такие как - всегда наследовать подмодули от pom в родительском каталоге, например. дерево наследования должно соответствовать вашему дереву каталогов, иначе некоторые плагины не будут работать, например. выпуск плагина или некоторые плагины отчетов.

Короткий ответ: в maven вы не можете иметь модуль дважды в иерархии/дереве вашего проекта.

В maven есть много неправильных способов, поэтому нужно придерживаться того, что, как известно, работает, например, pom иерархия == структура каталогов.

person siddhadev    schedule 10.03.2009
comment
in maven you cannot have a module twice in your project hierarchy/tree это то, что я искал. Я думаю, что Maven глупо не допускать этого и иметь возможность понять это. - person searchengine27; 24.09.2019

Это происходит, когда у вас есть такая структура:

+-- root-project-A
    `-- pom.xml
    +-- module-A
    |   `-- pom.xml
    +-- module-B
    |   `-- pom.xml
    +-- root-project-B
        `-- pom.xml
        +-- module-C
            `-- pom.xml

И настройте свои модули следующим образом:

|-- root-project-A
    `-- pom.xml
        <modules>
         <module>module-A</module>
         <module>module-B</module>
         <module>root-project-B</module> <!-- Error: project A reference project B -->
         <module>root-project-B/module-C</module> <!-- Error: project A reference project B -->
        </modules>

|-- root-project-B
    `-- pom.xml
        <modules>
         <module>module-C</module>
        </modules>

Проект A не может ссылаться на проект B, потому что B не ссылается на A как на родителя. Пакет должен быть независимым

person Alisson Gomes    schedule 09.02.2018

Для меня <artifactId> был одинаковым для 2 разных модулей в их pom, и это вызвало эту ошибку.
После изменения все заработало нормально.

person ASHUTOSH SHARMA    schedule 16.04.2019
comment
Это помогло мне. Спасибо! - person jsmtslch; 21.04.2021

Похоже, что «один и тот же подпроект», который вы можете создать из нескольких проектов, является зависимостью для всех этих проектов. Переместите его на более высокий уровень в дереве каталогов и объявите его как зависимость во всех проектах, которым он нужен. Он будет построен первым проектом, который вам нужен, а остальные увидят, что вы «были там, сделали это», и пропустят его.

person Sinc    schedule 15.10.2018

Вы пробовали один из этих параметров командной строки?

-fae,--fail-at-end            Only fail the build afterwards; allow all
                              non-impacted builds to continue
-fn,--fail-never              NEVER fail the build, regardless of project
                              result
person Olivier    schedule 26.02.2009
comment
Нет, это плохо. Я, честно говоря, даже не знаю, позволяет ли он по-прежнему работать сборке, когда у pom есть проблема с настройкой, но это не имеет значения, даже если это и так. Даже если сборка удалась, теперь вы смотрите на «успешную» сборку, когда, например, есть ошибки компиляции, среди десятков других проблем, которые это скроет. - person searchengine27; 24.09.2019