2010-06-03 9 views
5

Mam dwa projekty: Maven projekt-API projekt-impl POMInter Projekt Zależności w Maven

-projektu IMPL za określa zależność od projektu-API. Główny agregator pom zawiera listę modułów project-api i project-impl.

Jeśli uruchomię kompilację na najwyższym poziomie, zależności zostaną rozwiązane poprawnie. Jeśli uruchomię kompilację w projekcie-impl, to nie można znaleźć zależności projektu-api. Jak skonfigurować program maven tak, aby podczas kompilacji project-impl najpierw kompilował i zbierał zależności od innych projektów?

Odpowiedz

6

można zrobić tylko, że z projektu głównego

mvn -pl child -am 

będzie zbudować sub projektu a także wszystkich zależności w tym samym drzewie. ogólnie, gdy masz projekt wielomodułowy, powinieneś zawsze budować z rodzica, nigdy z dziecka. A jeśli tylko chcą zbudować jeden lub dwa projekty podrzędne, to zrobić:

mvn -pl child 

LUB

mvn -pl child2,child3 

(projekty child2 i child3 są budować, ale child1 i child4 nie są)

+1

+1 Zaawansowane opcje reaktora są sposobem na przejście do pracy –

+0

mvn -pl -am. –

1

Potrzebujesz zależności od api w POM modułu impl.

Podczas kompilacji w projekcie głównym reaktor znajdzie właściwą kolejność budowania.

Aby osobno skompilować projekt, należy najpierw "zainstalować" moduł projektu-api lub nie znajdzie odpowiednich zależności.

Jeśli pracujesz w zespole, automatyczny serwer kompilacji, który popycha artefakty do centralnego repozytorium, może pomóc złagodzić ból tutaj, ponieważ może to doprowadzić Cię do szału.

Wszystko działa bardzo dobrze, jednak działa w sposób "maven", który nie zawsze jest taki, jak my, ludzie, robimy rzeczy.