2012-05-21 18 views
9

In maven (auf nicht enthalten), sobald Sie Ihr definieren modules in Ihnen pom.xml alle Profile aggregieren die in ihnen festgelegten Module: (relevanter Teil nur)In Maven kann außer Kraft setzen ein Profil der Module

<project> 
    <modules> 
     <module>module1</module> 
    </modules> 
    <profiles> 
     <profile> 
      <id>pr1</id> 
      <modules> 
       <moudule>module2</module> 
      </modules> 

Wenn Sie eine mvn clean ausführen, wird der Befehl an module1 übergeben.

Wenn Sie mvn clean -Ppr1 ausgeben, wird es an module1 und module2 weitergeleitet.

Ich frage mich, ob in maven 3 ist es möglich, eine pom.xml mit Submodulen zu haben und überschreiben dies. Ich meine, ein Profil auszuführen, statt ihre eigenen Module zu der Build-Kraft der wie hinzufügen:

<project> 
    <!-- omitted --> 
    <modules> 
     <!-- modules --> 
    </modules> 
    <build> 
     <!-- build --> 
    </build> 
    <profiles> 
     <profile> 
      <!-- This profile with no modules --> 
     </profile> 
    </profiles> 
</project> 

Die Forderung klingt vielleicht albern, aber ich will nur wissen, ob es einen Mechanismus wie in Plugin-Konfiguration ist.

<configuration self.combine="override" 

Grüße!

ssedano

+0

Können Sie genauer sein? Ich habe deine Frage überhaupt nicht verstanden. –

Antwort

11

Es ist nicht möglich. Die Profilkonfiguration wird immer mit der Hauptkonfiguration zusammengeführt, sodass Sie in Ihrem Fall nur Module hinzufügen können.

Stattdessen können Sie jedoch eine Art "Standard" -Profil erstellen (durch <activeByDefault>true</activeByDefault> in <activation> Abschnitt), die aktiviert ist, wenn keine anderen Profile aufgerufen werden, und legen Sie die Liste Ihrer Standardmodule dort. Wenn dann kein Profil für den Maven-Buildaufruf angegeben wird, wird dieses "Standard" -Profil verwendet. Wenn Sie jedoch mindestens ein Profil explizit aufrufen, ist dies nicht der Fall, sodass Sie auf diese Weise die Liste der Module von Grund auf neu definieren können.

+0

@Michael Sicher, ich kann mit den Modulen ein Profil erstellen und deaktivieren. Kannst du mich auf die Seite verweisen, wo du das gelesen hast? Ich konnte es nicht finden. Vielen Dank! – ssedano

+0

Nun, ich bin mir nicht sicher, wo Sie diesen beschriebenen Trick finden können. Aber lesen Sie Maven's [Einführung in Build-Profile] (http://maven.apache.org/guides/introduction/introduction-to-profiles.html), wo ' true' Anweisung verwendet und abgedeckt und nur Implementiere es mit deinem Modulkoffer. Und um streng zu sein: Sie deaktivieren dieses Standardprofil nicht. Es ist nicht automatisch aktiv, wenn andere Profile verwendet werden. –

+0

Ich meinte die immer merge Sache.Aber diese Antwort ist gut genug – ssedano

0

Sie können wie diese Dinge tun:

<profiles> 
    <profile> 
     <id>run-xyz</id> 
     <activation> 
     <activeByDefault>true</activeByDefault> 
     </activation> 
     <modules> 
     <module>www-ab</module> 
     <module>www-cd</module> 
     </modules> 
    </profile> 

    <profile> 
     <id>run-its</id> 
     <activation> 
     <activeByDefault>false</activeByDefault> 
     </activation> 
     <modules> 
     <module>www-db</module> 
     <module>www-it</module> 
     </modules> 
    </profile> 
    </profiles> 

Wenn Sie über solche Dinge zu sprechen sind. Aber ich würde empfehlen, in solchen Dingen sehr vorsichtig zu sein.

Es ist nur die Frage, wie Sie activeByDefault setzen. Damit ist es möglich, mehr oder weniger jede Kombination zu erstellen.

+2

Mit dieser Konfiguration werden alle Module ausgeführt. Das ist nicht was ich will. Vielen Dank! – ssedano

9

Während die Frage alt ist, stuft Google sie immer noch hoch ein, daher ist es sinnvoll, eine neue Antwort hinzuzufügen.

Sie können die Aktivierung durch Abwesenheit einer Eigenschaft Trick zu erreichen, was Sie wollen.

<profiles> 
     <!-- By default, include the modules --> 
     <profile> 
      <id>full-build</id> 
      <activation> 
       <!-- Activation by absence of a property. Run normally, without -Dfull-build --> 
       <property> 
        <name>!skip-modules</name> 
       </property> 
      </activation> 
      <modules> 
       <module>module1</module> 
       <module>module2</module> 
       <module>module3</module> 
      </modules> 
     </profile> 

     <!-- No-modules build --> 
     <profile> 
      <id>no-modules</id> 
      <activation> 
       <!-- Activation by a property. Run with -Dskip-modules to activate --> 
       <property> 
        <name>skip-modules</name> 
       </property> 
      </activation> 
      <modules> 
      </modules> 
     </profile> 
    </profiles> 
Verwandte Themen