2016-04-25 6 views
0

maven-antrun-pluginを使用してダウンロードしたJARを実行するプロファイルがあります。プラグインの依存関係スコープの依存関係をmaven-antrun-pluginにどのように使用できますか?

別紙A:(これは動作します)

宿泊施設${maven.dependency.com.foobar.target-jar.jar.path}Can I use the path to a Maven dependency as a property?)を使用して、ダウンロードしたJARを参照することができます。しかし、このソリューションでは、カスタム依存関係とリポジトリ情報はプロファイルの範囲に限定されません。

<project> 
    ... 
    <repositories> 
     <repository> 
      <id>thirdparty</id> 
      <name>Third Party</name> 
      <url> 
       [URL for the repository that holds the target JAR] 
      </url> 
      <layout>default</layout> 
     </repository> 
    </repositories> 
    ... 
    <dependencies> 
     <dependency> 
      <groupId>com.foobar</groupId> 
      <artifactId>target-jar</artifactId> 
      <version>1.0.0</version> 
     </dependency> 
    </dependencies> 
    ... 
    <profiles> 
     <profile> 
      <id>runJARprofile</id> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-antrun-plugin</artifactId> 
         <version>1.8</version> 
         <inherited>false</inherited> 
         <executions> 
          <execution> 
           <id>run-jar</id> 
           <phase>package</phase> 
           <configuration> 
            <target name="runJar" fork="true"> 
             <java jar="${maven.dependency.com.foobar.target-jar.jar.path}" /> 
            </target> 
           </configuration> 
           <goals> 
            <goal>run</goal> 
           </goals> 
          </execution> 
         </executions> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 
... 
</project> 

別紙B:(ワーキングそれをもらっていない)ここ

、我々はプロファイルに依存してリポジトリ情報を移動しました。 Mavenはアーティファクトを正常にダウンロードしますが、プロパティでそれを参照する方法はわかりません。

<project> 
    ... 

    <profiles> 
     <profile> 
      <pluginRepositories> 
       <repository> 
        <id>thirdparty</id> 
        <name>Third Party</name> 
        <url> 
         [URL for the repository that holds the target JAR] 
        </url> 
        <layout>default</layout> 
       </repository> 
      </pluginRepositories> 
      ... 
      <id>runJARprofile</id> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-antrun-plugin</artifactId> 
         <version>1.8</version> 
         <inherited>false</inherited> 
         <dependencies> 
          <dependency> 
           <groupId>com.foobar</groupId> 
           <artifactId>target-jar</artifactId> 
           <version>1.0.0</version> 
          </dependency> 
         </dependencies> 
         <executions> 
          <execution> 
           <id>run-jar</id> 
           <phase>package</phase> 
           <configuration> 
            <target name="runJar" fork="true"> 
             <java jar="${?????}" /> 
            </target> 
           </configuration> 
           <goals> 
            <goal>run</goal> 
           </goals> 
          </execution> 
         </executions> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 
... 
</project> 
+0

私は問題/質問を理解していません。最初は 'maven.dependency.com.foobar.target-jar.jar.path'プロパティはどこに定義されていますか? – Tunaki

+1

@Tunaki最初の例のように、 '$ {maven.dependency.com.foobar.target-jar.jar.path} 'を使って' pom'の ''から抜け出しました。 「」に追加された「」を使用してください。私は問題は "プラグインの依存関係スコープの依存関係を_maven-antrun-plugin_の中でどのように使うことができるのでしょうか?"と思います。 – mkobit

+0

[このリンク](http://maven.apache.org/plugins/maven-antrun-plugin/examples/classpaths.html)に基づいて、プロパティ書式 '$ {maven.dependency.com.foobar.target-jar .jar.path} 'は廃止予定ですので、代わりに' $ {com.foobar:target-jar:jar} 'を使用してください。 Exhibit Aでこれを試しても動作しますが、まだExhibit Bでは動作していません。 – thn929

答えて

0

私はここにあなたの別紙Bに似たPOMをcratedとmvn package -P runJARprofile中に次のメッセージが表示されました:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.8:run 
(run-jar) on project so-36848518: An Ant BuildException has occured: 
Cannot execute a jar in non-forked mode. Please set fork='true'. 
[ERROR] around Ant part ...<java jar="${my:test:jar}"/>... 

私はそれぞれの行を変更:

<java jar="${my:test:jar} fork="true"/> 

および

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
+0

はい、実際のプロジェクトでは 'fork =" true "'が設定されています。私は例を宣言して一般化しようとしていましたが、それをさらに理解することなく削除してはいけません。元の投稿を更新します。ありがとう! – thn929

関連する問題