Zainstaluj nadrzędny POM bez budowania modułów potomnych


115

Mam rodzica POM w projekcie Maven o tej strukturze:

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

Chcę zainstalować POM „rodzica” w lokalnym REPO, aby umożliwić dziecku1 wprowadzenie pewnych zmian, które zrobiłem w dependencyManagement, ale nie mogę wykonać zwykłej „czystej instalacji”, ponieważ „child2” jest zepsute i nie będzie się budować.

Jaki jest właściwy sposób na zrobienie tego z maven (inny niż przejście do pom-rodzica i skomentowanie modułu "child2" ).

Odpowiedzi:


191

Użyj opcji „-N” w komendzie mvn.

Od mvn -h:

-N, - nierekurencyjne Nie powracaj do podprojektów


1
Opcja „-N” lub „- nierekurencyjna” oznacza, że ​​nie powtarzaj się w podprojektach.
STB Land

37

Chociaż Guillaume rzeczywiście ma rację i jest to właściwa opcja, osobiście zalecałbym pozostawienie rodzica jako oddzielnego modułu.

Uważam, że najlepszym podejściem do dziedziczenia jest:

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

W ten sposób możesz zawsze zainstalować tylko rodzica, mvn clean installbez dodatkowych opcji.

Możesz również mieć rodzica poza agregatorem, aby móc go ponownie używać między kolejnymi projektami.

Istnieje wiele korzyści z zachowania rodzica i agregatora jako dwóch oddzielnych rzeczy. Ostatecznie jednak wybierasz to, co najlepsze dla Twojego projektu / środowiska.


1
Zmagałem się z tym problemem godzinami i odkryłem, że niektóre projekty robią w ten sposób, na przykład proca do apache, JackRabbit i Artifactory.
accuya,

To izolowane dziedziczenie modułów Maven (zależności, właściwości itp.) Z budowania wsadowego (moduły potomne).
Danubian Sailor

4
Czy jest to uważane za najlepszą praktykę? Jakieś blogi lub inne dotyczące tego podejścia?
Sled

1
@ArtB Czy w międzyczasie natknąłeś się na taki artykuł?
Tomislav Nakic-Alfirevic

4
@MaximilianSchulz: Nie ma idealnego świata, jak to mówią ... To tylko jedna z możliwości zrobienia tego.
carlspring
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.