Встановіть батьківський POM, не будуючи дочірніх модулів


115

У мене є батьківський POM в проекті Maven з такою структурою:

             parent
               |
        ---------------
        |             |
      child1       child2

Я хочу встановити POM "батьків" у місцевому РЕПО, щоб дозволити child1 вносити деякі зміни, які я робив у залежності від управління, але я не можу робити звичайну "чисту установку", оскільки "child2" порушена і не побудує.

Який правильний спосіб зробити це за допомогою maven (крім того, щоб піти до батьківського пом і коментувати модуль "child2" ).

Відповіді:


191

Використовуйте опцію '-N' в команді mvn.

Від mvn -h:

-N, - нерекурсивні Не повторюються в підпроектах


1
Параметр '-N' або '- нерекурсивний' означає, що не повторюється в підпроектах.
Земля СТБ

36

Хоча Гійом справді правий і це правильний варіант, я особисто рекомендую зберігати вашого батька як окремий модуль.

Я вважаю, що найкращим підходом до спадкування є такий:

aggregator
|- module1/ (extends parent)
| |- pom.xml
|- module2/ (extends parent)
| |- pom.xml
|- parent/
| |- pom.xml
|- pom.xml

Таким чином, ви завжди можете встановити лише батьківський, mvn clean installбез додаткових опцій.

Ви також можете мати батьківську програму поза агрегатором, щоб ви могли повторно використовувати її між іншими проектами.

Існує чимало переваг утримання батьків та агрегатора як двох окремих речей. Зрештою, ви вибираєте, що найкраще підходить для вашого проекту / середовища.


1
Я боровся з цим питанням годинами і виявив, що деякі проекти роблять таким чином, як, наприклад, acheling sling, JackRabbit та Artifactory.
accuya

Він виділив успадковування модуля Maven (залежності, властивості тощо) від створення партії (дочірні модулі).
Дунайський матрос

4
Це вважається найкращою практикою? Будь-які блоги чи інші за цим підходом?
Sled

1
@ArtB Ти тим часом натрапив на таку статтю?
Томіслав Накіч-Альфіревич

4
@MaximilianSchulz: Немає ідеального світу, як кажуть ... Це лише один варіант зробити це.
carlspring
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.