Wie verwende ich TestNG mit Apache Ivy?
Frage
Ich habe versucht, zu verwenden, TestNG mit Apache Ivy , war aber nicht erfolgreich. Hier ist mein 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>
Dies schlägt fehl, um tatsächlich ein TestNG jarfile herunterladen. Es scheint zu sein, weil TestNG eine jarfile für jdk14 und jdk15 hat. Hier ist die Ausgabe von 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
Im Repository können Sie zwei verschiedene jarfiles sehen: 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
Wie gebe ich entweder jdk14
oder jdk15
?
Lösung
Sie müssen die Sichter des Artefakts spezifizieren Sie wollen.
Es ist ein verwandter zu beheben, wie von 2.1.0-RC1 . Sie können das Element artifact
im dependency
Elemente verwenden, um die classifier
festgelegt werden sollen. In diesem Fall sollte der Klassifizierer jdk14
oder jdk15
sein. Wenn Sie Ihre jdk15
ivy.xml
wäre dann:
<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>
Beachten Sie die Spezifikation des XML-Namespace "http://ant.apache.org/ivy/extra"
als Attribut des ivy-module
Element. Ohne dass der e:classifier
wird nicht funktionieren.