2013-04-03 3 views
6

私はMaven 3.0.3を使用しています。私はMavenプロファイルのアクティブ化の "activeByDefault"フラグについて混乱しています。私が望むのは、デフォルトプロファイルを持つことですが、他のプロファイル(たとえば-P other profile)を指定した場合、デフォルトプロファイルのビルド内のプラグインは実行されません。そして、誰かが指定している場合:Mavenのデフォルトプロファイルでプラグインを実行するにはどうすればいいですか?別のプロファイルが指定されている場合、プラグインが実行されないようにしますか?

mvn clean install 

をデフォルトのプロファイルからのプラグインが実行されますが、他のプロファイルのプラグインは実行されません。ただし、コマンドラインで別のプロファイル( "-P other"を使用)を指定しても、デフォルトプロファイルのプラグインは常に実行されます。ここで私が持っているもの

<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> 

答えて

4

デフォルトのプロファイルが別のプロファイルが指定されている場合は、無効になっているだけ、他のプロファイルが同じPOMに指定されていることです。

あなたがポンポンに(デフォルトで有効)だけつのプロファイルを持っている場合は、-Pを使用しない限り、あなたは、それを無効にすることはできません!XXX

ソリューションは、あなたがそのプロファイルを確保するということですこれらのプロファイルがいくつかのPOMのために空であっても、そのdevのプロファイルを定義するPOMに常に存在するdevを非アクティブ化する必要があります。

+1

私はcmd.exeを使って作業しているように感じますが、あなたはそのことをすることができますが、一貫性や常識を望んではいけません。 – akostadinov

関連する問題