I tried to use TestNG with Apache Ivy, but was unsuccessful. Here is my ivy.xml:
<ivy-module version='2.0'> <info organisation='me' module='myproject'/> <dependencies> <dependency org='org.testng' name='testng' rev='5.8' /> </dependencies> </ivy-module>
This fails to actually download a TestNG jarfile. It seems to be because TestNG has a jarfile for jdk14 and jdk15. Here’s the output from ivy:retrieve:
[ivy:retrieve] :: resolving dependencies :: me#myproject;working@jared-mbp17 [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
In the repository you can see two different 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
How do I specify either jdk14 or jdk15?
You need to specify the classifier of the artifact you want.
There is a related fix as of 2.1.0-RC1. You can use the element
artifactwithin thedependencyelement to specify theclassifieryou want. In this case, the classifier should bejdk14orjdk15. If you wantjdk15yourivy.xmlwould then be:Note the specification of the XML namespace
'http://ant.apache.org/ivy/extra'as an attribute of theivy-moduleelement. Without that thee:classifierwon’t work.