2012-02-14 12 views
2

私は3つのプロファイルが定義されたpomを持っています。 は私がしたい:maven:pom内の複数のプロファイルの順

<profiles> 
    <profile> 
     <id>generate-axis-stubs</id> 
     <activation> 
      <file> 
       <missing>target/generated-sources</missing> 
      </file> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.axis2</groupId> 
        <artifactId>axis2-wsdl2code-maven-plugin</artifactId> 
        <configuration> 
         <generateServerSide>true</generateServerSide> 
         <generateServicesXml>true</generateServicesXml> 
         <outputDirectory>target/generated-sources</outputDirectory> 
         <packageName>${genclasses.package}</packageName> 
        </configuration> 
        <executions> 
         <execution> 
          <id>ESISGeneralSigningStatusUpdate_V1_0</id> 
          <goals> 
           <goal>wsdl2code</goal> 
          </goals> 
          <phase>generate-sources</phase> 
          <configuration> 
           <wsdlFile>${wsdl.src.dir}/ESISGeneralSigningStatusUpdate_V1_0.wsdl</wsdlFile> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 

    <profile> 
     <id>normal</id> 
     <activation> 
      <property> 
       <name>!env</name> 
      </property> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <configuration> 
         <excludes> 
          <exclude>**/JdbcDataServiceImplTest.java</exclude> 
         </excludes> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 

<!-- This profile should be used to run tests that requires access to DB It is activated in case system variable env=dev --> 
<profile> 
    <id>run-db-tests</id> 
    <activation> 
     <property> 
      <name>env</name> 
      <value>dev</value> 
     </property> 
    </activation> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <includes> 
         <include>**/*Test.java</include> 
        </includes> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</profile> 

:(必要な場合)

  1. ランなどのプロパティに基づいて、常に他のすべての前に ポンポンスニップを
  2. 実行DEV /通常のプロファイルをプロファイル "を生成します"問題は、クリーンコンパイルでは、これは2回ごとに正確に動作することです。 -X debugを有効にして出力を比較しました。 - 失敗した、+は働いたものです。

    @@ -1551,6 +1551,10 @@ 
    [DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, 
    generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, 
    package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] 
    [DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] 
    [DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] 
    +[DEBUG] Using mirror nexus (http://nexus.edb.com/nexus/content/groups/public/) for apache.snapshots (http://repository.apache.org/snapshots). 
    +[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] 
    +[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] 
    +[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] 
    [DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] 
    [DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] 
    [DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] 
    @@ -1563,7 +1567,7 @@ 
    [DEBUG] === PROJECT BUILD PLAN ================================================ 
    [DEBUG] Project:  com.edb.esign:gssWsServer:2.3-SNAPSHOT 
    [DEBUG] Dependencies (collect): [] 
    -[DEBUG] Dependencies (resolve): [compile] 
    +[DEBUG] Dependencies (resolve): [compile, test] 
    [DEBUG] Repositories (dependencies): [nexus (http://nexus.edb.com/nexus/content/groups/public/, releases+snapshots)] 
    [DEBUG] Repositories (plugins)  : [nexus (http://nexus.edb.com/nexus/content/groups/public/, releases+snapshots)] 
    [DEBUG] ----------------------------------------------------------------------- 
    

    私は助けを実行します。次のプロファイルがアクティブな :それは示して成功した後、アクティブ・プロファイル

      • ノーマル(ソース:POM)
      • ネクサス(source:settings.xml)
    1. は失敗の後にそれが示す: 以下のプロファイルがアクティブである:

      • 発生軸スタブ(ソース:POM)
      • 正常(ソース:POM)
      • ネクサス(ソース:設定.xmlファイル)

    私は手動でそれをきれいにしてからコンパイルした場合 - それはすべての時間を動作します。しかし、なぜそれは常にクリーンコンパイルのために働かないのですか? ありがとう!

答えて

2

プロファイルが正確に1回評価されるためです。したがって、問題はclean compileではなく、Mavenを起動するときにフォルダtarget/generated-sourcesが存在するかどうかです。

もし存在する場合、クリーンはフォルダを削除するが、Mavenはそれ以上気にしないので、clean compileは失敗する必要があります。

+0

Thx、それはかなり説明しています..しかし、私は何をしたいのですか?他の2つの前に "generate"を実行してください。私はそれをactiveByDefaultに変更しようとしましたが、今は全く動かないでしょう。 – vangop

+0

または、それをトップレベルのセクションに移動します。 – vangop

+1

いつもプラグインを実行するのはなぜですか?ソースがすでに生成されている場合は、何もしてはいけません。 - /もし何かが生成された場合は、拡張要求を提出するか、ソースを取得して自分で修正してください。 –

関連する問題