2016-03-24 6 views
1

Eclipse-Äther scheint nicht die richtige Release zurückzukehren, wenn ich versuche, eine LATEST Version zu beheben:Eclipse-Äther Lösung nicht `LATEST` richtig

val artifact = DefaultArtifact("org.testng:testng:LATEST") 
val versionResult = system.resolveVrsion(session, VersionRequest(artifact, repositories, null)) 
println(versionResult) 

produziert:

6.9.8 @ maven (https://jcenter.bintray.com/, default, releases+snapshots) 

jedoch 6,9 .10 ist das neueste und JCenter meldet es korrekt, sowohl in the directory als auch in der :

<metadata> 
    <groupId>org.testng</groupId> 
    <artifactId>testng</artifactId> 
    <version>6.9.10</version> 
    <versioning> 
    <latest>6.9.10</latest> 
    <release>6.9.10</release> 

Warum bekomme ich 6.9.8 statt 6.9.10?

+0

Könnten Sie eine [mcve] posten? Ihr Code wird wahrscheinlich nicht funktionieren, da er zu Beginn mit Tippfehlern versehen ist. Sie brauchen etwas, das wir testen können. – Tunaki

+0

Das heißt, von der Spitze meines Kopfes, sollten Sie 'resolveVersionRange' mit dem Artefakt' "org.testng: testng: (0,]" 'wie ich hier gezeigt http://stackoverflow.com/q/35488167 verwenden/1743880 – Tunaki

+0

Bereiche sind das erste, was ich ausprobiert habe und sie geben das gleiche Ergebnis zurück, 6.9.8 statt 6.9.10 Es gibt keine Tippfehler, es ist gültig Kotlin. Der Code ist nur die Kesseltafel, die einen Kontext und eine Sitzung erstellt. Ich benutze Standard-Konstruktoren. Ich glaube nicht, dass sie sich sehr zum Ergebnis ändern werden. –

Antwort

2

Es gibt zwei mögliche Ursachen für Ihr Problem. Zuerst nehmen Sie an, dass das magische Wort LATEST von Äther unterstützt wird und wenn ich mich richtig erinnere (und in den Code von Äther schauen wird es nicht unterstützt). Das bedeutet, dass Sie einen Versionsbereich verwenden sollten, um die neuesten Versionen zu erhalten. Wenn Sie einen Versionsbereich haben, müssen Sie resolveVersionRange(...) statt resolveVersion(..) anrufen.

String versionRange = "[0,)"; 

    Artifact artifact = 
     new DefaultArtifact("org.testng:testng:jar:" + versionRange); 
    VersionRangeRequest rangeRequest = new VersionRangeRequest(); 
    rangeRequest.setArtifact(artifact); 
    rangeRequest.setRepositories(remoteRepos); 

    VersionRangeResult rangeResult = repository.resolveVersionRange(repositorySystemSession, rangeRequest); 
    List<Version> versions = rangeResult.getVersions(); 

Die above is a slightly modified version taken from a plugin ich schrieb. Es gibt auch eine ctor of DefaultArtifact which contains only the appropriate parameters, die eine bessere Alternative zur Verwendung sein könnte, anstatt die Strings zu verketten.

+0

Danke. Ich bin tatsächlich auf diese Methode gestoßen, die Sie haben, Englisch: www.mjfriendship.de/en/index.php?op...39&Itemid=32 Mir ist jetzt klar, dass es zusätzliche Parameter gibt, um die Auflösung zu erzwingen, anstatt sich auf die lokalen XML - Metadaten zu verlassen. Ich habe noch nicht alles herausgefunden, aber ich bin auf meinem Weg Antwort: –

+0

Gern geschehen .. – khmarbaise