Alt modülleri oluşturmadan üst POM'u yükleyin


115

Bir Maven projesinde şu yapıya sahip bir ana POM'um var:

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

Ben POM yüklemek istediğiniz "ebeveyn" izin vermek için yerel REPO içinde child1 ı dependencyManagement yaptığı bazı değişiklikler alır, ama ben normal "install temiz" yapamaz çünkü "alt2" bozuldu ve yapı olmayacak.

Bunu maven ile yapmanın en uygun yolu budur (ebeveyn pom'a gidip "child2" modülüne yorum yapmak dışında).

Yanıtlar:


191

Mvn komutundaki '-N' seçeneğini kullanın.

Kimden mvn -h:

-N, - non-recursive Alt projelerde tekrar etmeyin


1
"-N" veya "- yinelemesiz" seçeneği alt projelerde yinelenmemesi anlamına gelir.
STB Land

37

Guillaume gerçekten haklıyken ve bu doğru seçenek olsa da, kişisel olarak ebeveyninizi ayrı bir modül olarak tutmanızı tavsiye ederim.

Miras için en iyi yaklaşımı şu şekilde buluyorum:

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

Bu şekilde, mvn clean installekstra seçenekler olmadan her zaman yalnızca ebeveyni kurabilirsiniz .

Üst öğeyi toplayıcının dışında da bulundurabilirsiniz, böylece onu daha fazla proje arasında yeniden kullanabilirsiniz.

Ana ve toplayıcıyı iki ayrı şey olarak tutmanın sayısız yararı vardır. Ama sonunda, projeniz / ortamınız için en iyisini seçersiniz.


1
Bu sorunla saatlerce uğraştım ve apache sling, JackRabbit ve Artifactory gibi bazı projelerin bu şekilde gittiğini gördüm.
accuya

Toplu oluşturmadan (alt modüller) maven modül mirasını (bağımlılıklar, özellikler vb.) İzole etti.
Danubian Sailor

4
Bu bir en iyi uygulama olarak kabul edilir mi? Bu yaklaşımla ilgili herhangi bir blog veya başka bir şey var mı?
Kızak

1
@ArtB Bu arada böyle bir yazıya rastladınız mı?
Tomislav Nakic-Alfirevic

4
@MaximilianSchulz: Dedikleri gibi mükemmel bir dünya yok ... Bunu yapmanın sadece bir yolu bu.
carlspring
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.