2016-05-07 5 views
1

プラグインのantの実行にmavenのプロパティを渡すことができません。私はすでにMaven antrun: pass maven properties to antを読みましたが、これは解決しませんでした問題。私は<code>maven-antrun-plugin.</code></p> <p>を使用してのMavenで実行されるスクリプトにカスタムMavenのプロパティ(バージョン) を渡して問題を抱えている

私の問題と上記のSOの質問に記載されているものとの間には1つの違いがあります。

私の場合、maven-antrun-pluginは親プロジェクトの子として実行されます。プロパティはすべてのモジュールのグローバルプロパティとして定義されます。

maven-antrun-pluginは、プロジェクトの1つのモジュールです。

親ポンポンスニペットは次のようになります。

<project ...> 
    <!-- Parent --> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>xxx</groupId> 
    <artifactId>xxx</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <properties> 
    <my.project.version>0.0.3-SNAPSHOT</my.project.version> 
    <maven.compiler.source>1.7</maven.compiler.source> 
    <maven.compiler.target>1.7</maven.compiler.target> 
    <java.version>1.7</java.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

アリ実行ポンポンは次のようになります。プロパティがtarget.version

<project> 
     <!-- Module --> 
<parent> 
    <groupId>xxx</groupId> 
    <artifactId>xxx</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    </parent> 

<build> 
    <plugins> 
     <plugin> 
       <artifactId>maven-antrun-plugin</artifactId> 
       <executions> 
        <execution> 
        <id>ant-magic</id> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>run</goal> 
        </goals> 
        <configuration> 
         <tasks> 
         <property name="compile_classpath" 
            refid="maven.compile.classpath"/> 
         <property name="outputDir" 
            value="${project.build.outputDirectory}"/> 
         <property name="sourceDir" 
            value="${project.build.sourceDirectory}"/> 
         <property name="compile_classpath" refid="maven.compile.classpath"/> 

         <property name="target-version" refid="${my.project.version}"/> 
         <echo message="Passed target version to ant build script: ${target-version}"/>  

         <ant antfile="${basedir}/src/main/ant/create-dist.xml" 
          target="deploy-ea"/> 
         </tasks> 
        </configuration> 
        </execution> 
       </executions> 
       </plugin> 
     </plugins> 
</build> 
</project> 

命名され、次のMavenのビルドエラーがantrun-のmaven-pluginのが含まれている子モジュールのビルドのexcution中に発生します。

`An Ant BuildException has occured: Reference 0.0.3-SNAPSHOT` not found 

これはmavenプロパティの値なので興味があります。

また、私はちょうど次のエラーにつながる私の場合

<property name="target-version" refid="my.project.version"/> 

refid attribute 

の引数として単純なプロパティ名を使用しようとしました:

An Ant BuildException has occured: Reference my.project.version not found 

antスクリプトは次のようにこのプロパティを使用します

<property name="myproject-jar" value="mymodulename-${target-version}.jar"/> 

設定に間違いがあるか、プロパティが親pom内で定義されているという問題ですか。そのためにライフサイクルの問題が発生する可能性はありますか?

+0

まず...あなたはのmaven-antrun-を使用している理由をさらに疑問がありますプラグイン? – khmarbaise

+0

@khmarbaiseまず、問題の関連部分だけを表示したかったので、この場合はpomスニペットです。私はネイティブのC + +、JNIを構築する必要があるので、第二に私はantのプラグインを使用しています。これは私にとっては最も実用的な方法であるようです。おそらく、あなたは私の素晴らしい機能を活用して適切なJavaクライアントに関するmavenを使用して、C + +プロジェクトを構築する素晴らしいソリューションを提供することができます。 – Diversity

+0

https://github.com/maven-nar/nar-maven-pluginをご覧になることをお勧めします。 – khmarbaise

答えて

1

propertyタグに間違ったアトリビュート名refidを使用しました。属性をvalueに変更すると問題が解決しました。さらに、tasksタグは、非推奨としてマークされているため、targetに置き換えられました。しかし、これは与えられた問題に影響を与えませんでした。それはあなたが大規模マルチモジュールのビルドのモジュール内にある場合場合である親から継承するようなあなたのポンポンスニペットが見えない

<project> 
    ... 
    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-antrun-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>ant-magic</id> 
         <phase>prepare-package</phase> 
         <goals> 
          <goal>run</goal> 
         </goals> 
         <configuration> 
          <tasks> 
           <property name="compile_classpath" 
              refid="maven.compile.classpath"/> 
           <property name="outputDir" 
              value="${project.build.outputDirectory}"/> 
           <property name="sourceDir" 
              value="${project.build.sourceDirectory}"/> 
           <property name="compile_classpath" refid="maven.compile.classpath"/> 

           <property name="target-version" value="${my.project.version}"/> <!-- PROBLEM refid should be value--> 
           <echo message="Passed target version to ant build script: ${target-version}"/>  

           <ant antfile="${basedir}/src/main/ant/create-dist.xml" 
            target="deploy-ea"/> 
          </tasks> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 
関連する問題

 関連する問題