2016-04-25 125 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'的''dependencies>'中取出的,當第二個例子想要使用添加到''的''。我認爲這個問題是「你怎麼能在插件的依賴範圍中使用_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}'來代替。在圖表A中試過,但它仍然有效,但在圖表B中仍然不起作用。 – thn929

回答

0

我裝箱類似於您附件B這裏POM和期間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

相關問題