2013-04-03 10 views
6

Ich benutze Maven 3.0.3. Ich bin verwirrt über das "activeByDefault" -Flag in einer Maven-Profilaktivierung. Ich möchte ein Standardprofil haben, aber wenn jemand ein anderes Profil angibt (z. B. -P anderes Profil), wird keines der Plugins innerhalb des Builds des Standardprofils ausgeführt. Und wenn jemand angibt:Wie starte ich Plugins in meinem Maven-Standardprofil, aber verhindere, dass diese Plugins ausgeführt werden, wenn ein anderes Profil angegeben wird?

mvn clean install 

die Plugins aus dem Standardprofil wird ausgeführt, aber Plugins in anderen Profilen wird nicht ausgeführt. Die Plugins im Standardprofil werden jedoch immer ausgeführt, auch wenn ich ein anderes Profil (über "-P other") in der Befehlszeile angegeben habe. Hier ist, was ich

<profiles> 
    <profile> 
     <id>dev</id> 
     <activation> 
      <activeByDefault>true</activeByDefault>   
     </activation> 
     <build> 
      <plugins> 
       <!-- Prepare liquibase scripts to run against the test db. --> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-antrun-plugin</artifactId> 
        <version>1.7</version> 
        <dependencies> 
         <dependency> 
          <groupId>org.mainco.subco</groupId> 
          <artifactId>database</artifactId> 
          <version>${project.version}</version> 
         </dependency> 
        </dependencies> 
        <executions> 
         <execution> 
          <id>unzip-liquibase-archive</id> 
          <phase>process-test-resources</phase> 
          <configuration> 
           <target> 
            <echo message="unzipping liquibase archive" /> 
            <unzip 
             src="${user.home}/.m2/repository/org/mainco/subco/database/${project.version}/database-${project.version}.jar" 
             dest="${project.build.directory}" /> 
           </target> 
          </configuration> 
          <goals> 
           <goal>run</goal> 
          </goals> 
         </execution> 
         <!-- Replace relative references in liquibase file with absolute ones. --> 
         <execution> 
          <id>format-liquibase-files</id> 
          <phase>process-test-resources</phase> 
          <configuration> 
           <target> 
            <replace token='include file="' 
             value="include file=&quot;${project.build.directory}/" file="target/db.changelog-master.xml" /> 
           </target> 
          </configuration> 
          <goals> 
           <goal>run</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 

       <!-- Run the liquibase scripts --> 
       <plugin> 
        <groupId>org.liquibase</groupId> 
        <artifactId>liquibase-maven-plugin</artifactId> 
        <version>2.0.1</version> 
        <dependencies> 
         <dependency> 
          <groupId>mysql</groupId> 
          <artifactId>mysql-connector-java</artifactId> 
          <version>5.1.18</version> 
         </dependency> 
        </dependencies> 
        <executions> 
         <execution> 
          <id>build-database</id> 
          <phase>process-test-resources</phase> 
          <configuration> 
           <driver>com.mysql.jdbc.Driver</driver> 
           <url>jdbc:mysql://${test.mysql.db.host}:${test.mysql.db.port}/${test.mysql.db.sid}</url> 
           <username>${test.mysql.db.user}</username> 
           <password>${test.mysql.db.password}</password> 
           <changeLogFile>${project.build.directory}/db.changelog-master.xml</changeLogFile> 
           <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase> 
          </configuration> 
          <goals> 
           <goal>update</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin>     
      </plugins> 
     </build> 
    </profile> 
    ... 
</profiles> 

Antwort

4

Standardprofil haben, deaktiviert wird, wenn ein anderes Profil angegeben ist, aber nur ist, dass andere Profile in der gleichen POM angegeben ist.

Also, wenn Sie nur ein Profil (standardmäßig aktiv) haben in einem pom, werden Sie nicht in der Lage sein, sie zu deaktivieren, wenn Sie die -P verwenden! Xxx

Eine Lösung besteht darin, dass Sie sicherstellen, dass Profile das sollte den dev deaktivieren, der immer auf den POMs vorhanden ist, die dieses dev-Profil definieren, auch wenn diese Profile für einige POMs leer sind.

+1

seltsam, mit Maven Ich fühle mich wie mit cmd.exe arbeiten, können Sie das Zeug tun, aber hoffe nicht auf Konsistenz oder gesunden Menschenverstand: / – akostadinov