2010-03-08 15 views
8

Ich habe ein Multi-Modul Maven-Projekt, das erfolgreich baut, würde ich nur eine der Module, die ich habe, bauen. Wie würde ich das mit profiles machen? Ich könnte es von der Konsole auf zwei Arten tun, eine Möglichkeit ist, gehen Sie zum Kind-Modul und mvn package oder ich könnte Reaktor verwenden, um nur ein Modul zu bauen.Maven Profil für einzelnes Modul

Kann ich dasselbe mit Profilen machen? Durch Ändern von POM? Danke

EDIT

Wenn aus POM nicht möglich ist, kann ich es aus settings.xml?

Antwort

13

Um dies mit Profilen zu implementieren, können Sie zwei Profile verwenden, ein <activeByDefault> mit allen Modulen und ein anderes mit dem gewünschten Modul. Etwas wie folgt aus:

<profiles> 
    <profile> 
    <id>all</id> 
    <activation> 
     <activeByDefault>true</activeByDefault> 
    </activation> 
    <modules> 
     <module>module-1</module> 
     ... 
     <module>module-n</module> 
    </modules> 
    </profile> 
    <profile> 
    <id>module-2</id> 
    <modules> 
     <module>module-2</module> 
    </modules> 
    </profile> 
<profiles> 

Und dann rufen Sie wie folgt aus:

mvn -Pmodule-2 package 

Zwei Dinge zu beachten:

  1. Sie müssen die <modules> aus dem POM in einem „default bewegen "Profil (weil <modules> von einem Profil nur additiv sind, verstecken sie nicht die Module, die im POM deklariert sind).
  2. Wenn Sie es als <activeByDefault> markieren, wird das Profil "default" ausgewählt, wenn nichts anderes aktiv ist, aber deaktiviert, wenn etwas anderes ist.

One sogar den Namen des Moduls parametrisieren könnte und sie als Eigentum übergeben:

<profiles> 
    ... 
    <profile> 
    <id>module-x</id> 
    <activation> 
     <property> 
     <name>module-name</name> 
     </property> 
    </activation> 
    <modules> 
     <module>${module-name}</module> 
    </modules> 
    </profile> 
<profiles> 

und rufen Maven wie folgt aus:

mvn -Dmodule-name=module-2 package 

Aber das ist eine schlechte IMHO Implementierung I bevorzugen die -pl "fortgeschrittenen" Reaktoroptionen (weniger xml, viel mehr Leistung und Flexibilität):

mvn -pl module-2 package 
+0

@Pascal Thivent Einfach genial .. Ich weiß nicht, was ich sagen soll .. danke m8, du bist unübertroffen, wenn es darum geht, Maven – ant

+0

Ich stimme @Pascal ist ein Maven Genie. Ich würde auch die Stimme hinzufügen, dass es sauberer ist, einen Reaktor zu bauen, als mehrere Profile zu konfigurieren. –