Обход ошибки Maven: проект «XYZ» дублируется в реакторе - PullRequest
6 голосов
/ 26 февраля 2009

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

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

Ответы [ 5 ]

6 голосов
/ 09 февраля 2018

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

+-- 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 как на родителя. Пакет должен быть независимо

3 голосов
/ 10 марта 2009

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

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

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

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

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

0 голосов
/ 16 апреля 2019

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

0 голосов
/ 16 октября 2018

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

0 голосов
/ 26 февраля 2009

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

-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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...