2009-04-18 48 views
6

我试图使用TestNGApache Ivy,但没有成功。这是我的ivy.xml如何在Apache Ivy上使用TestNG?

<ivy-module version="2.0"> 

    <info organisation="me" module="myproject"/> 

    <dependencies> 
     <dependency org="org.testng" name="testng" rev="5.8" /> 
    </dependencies> 

</ivy-module> 

这实际上没有下载TestNG jarfile。这似乎是因为TestNG为jdk14和jdk15提供了一个jar文件。下面是从ivy:retrieve输出:

[ivy:retrieve] :: resolving dependencies :: me#myproject;[email protected] 
[ivy:retrieve] confs: [default] 
[ivy:retrieve] found org.testng#testng;5.8 in public 
[ivy:retrieve] :: resolution report :: resolve 1139ms :: artifacts dl 11ms 
    --------------------------------------------------------------------- 
    |     |   modules   || artifacts | 
    |  conf  | number| search|dwnlded|evicted|| number|dwnlded| 
    --------------------------------------------------------------------- 
    |  default  | 1 | 1 | 1 | 0 || 1 | 0 | 
    --------------------------------------------------------------------- 
[ivy:retrieve] 
[ivy:retrieve] :: problems summary :: 
[ivy:retrieve] :::: WARNINGS 
[ivy:retrieve]  [FAILED  ] org.testng#testng;5.8!testng.jar: (0ms) 
[ivy:retrieve] ==== shared: tried 
[ivy:retrieve] /Users/jared/.ivy2/shared/org.testng/testng/5.8/jars/testng.jar 
[ivy:retrieve] ==== public: tried 
[ivy:retrieve] http://repo1.maven.org/maven2/org/testng/testng/5.8/testng-5.8.jar 
[ivy:retrieve]  :::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:retrieve]  ::    FAILED DOWNLOADS   :: 
[ivy:retrieve]  ::^see resolution messages for details^:: 
[ivy:retrieve]  :::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:retrieve]  :: org.testng#testng;5.8!testng.jar 
[ivy:retrieve]  :::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:retrieve] 
[ivy:retrieve] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS 

在库中,您可以看到两个不同的jarfiles中: http://repo1.maven.org/maven2/org/testng/testng/5.8/testng-5.8-jdk14.jar http://repo1.maven.org/maven2/org/testng/testng/5.8/testng-5.8-jdk15.jar

如何指定要么jdk14jdk15

回答

8

您需要指定所需工件的分类器。

有一个相关的fix as of 2.1.0-RC1。您可以使用dependency元素中的元素artifact来指定所需的classifier。在这种情况下,分类器应该是jdk14jdk15。如果你想你的jdk15然后ivy.xml是:

<ivy-module version="2.0" 
      xmlns:e="http://ant.apache.org/ivy/extra"> 

    <info organisation="me" module="myproject"/> 

    <dependencies> 
     <dependency org="org.testng" name="testng" rev="5.8" 
        transitive="false"> 
     <artifact name="testng" type="jar" ext="jar" e:classifier="jdk15" /> 
     </dependency> 
    </dependencies> 

</ivy-module> 

注为ivy-module元素的属性的XML命名空间"http://ant.apache.org/ivy/extra"的规范。没有这个e:classifier将无法​​正常工作。