2012-03-31 12 views
4

Ich kann nicht in der Lage sein, eine zweite Gruppe von Gläsern zu einem lokalen Maven Repo mit einer separaten Upload-Aufgabe zu veröffentlichen, anders als uploadArchives. Hier ist mein Setup:Artefakte von mehreren Konfigurationen in Maven in Gradle hochladen

uploadArchives { 
    repositories { 
    mavenDeployer { 
     repository(url: project.releaseRepoUrl) 
     snapshotRepository(url: project.snapshotRepoUrl) 
    } 
    } 
} 

task sourcesJar(type: Jar){ ... } 

artifacts{ 
    archives sourcesJar 
} 

Das obige funktioniert wie erwartet. Dann habe ich eine zusätzliche configuration

configurations{ 
    guiceArchives 
} 

task guiceJar(type: Jar){ ... } 

task guiceSourcesJar(type: Jar){ ... } 

artifacts{ 
    guiceArchives guiceJar 
    guiceArchives guiceSourcesJar 
    //archives guiceJar 
    //archives guiceSourcesJar 
} 

Ausführen gradle uploadArchives OK funktioniert, aber gradle uploadGuiceArchives tut nichts:

:core:guiceClasses UP-TO-DATE 
:core:guiceJar UP-TO-DATE 
:core:guiceSourcesJar UP-TO-DATE 
:core:jar UP-TO-DATE 
:core:sourcesJar UP-TO-DATE 
:core:uploadArchives 

BUILD FINISHED 

Einzel guiceJar und guiceSourcesJar Aufgaben selbst gut funktionieren, und die Inhalte der guiceArchives Konfiguration auch ausdrucken enthüllt Diese Gläser sind korrekt als Artefakte enthalten.

Ich habe versucht, vorübergehend guiceJar und guiceSourcesJar zum archives Konfiguration zuweisen, die sie sagen, macht sich beschweren:

A POM cannot have multiple artifacts with the same type and classifier. 

Welche genau das, was die manual says ist. Also nahm ich an, dass dieser Artefakt-Konflikt die Ursache des Problems war. So

Ich reparierte es addFilter Verwendung als das Handbuch schon sagt, das ist toll gearbeitet, aber nur, wenn guiceJar und guiceSourcesJar sind archives zugeordnet. Wenn ich sie zurück zu guiceArchives und gradle uploadGuiceArchives versuchen, tut es immer noch nichts.

Gibt es keine Möglichkeit, mehrere Artefakte mit verschiedenen Upload-Aufgaben hochzuladen?

Lösung:

Hier ist das Update mit der von @ Peter Niederwieser bereitgestellte Lösung.

einfach hinzufügen:

uploadGuiceArchives { 
    repositories { 
    mavenDeployer { 
     repository(url: project.releaseRepoUrl) 
     snapshotRepository(url: project.snapshotRepoUrl) 
    } 
    } 
} 

Hinweis: die addFilter ist nicht erforderlich.

Dank!

Edit2:

Zur Vollständigkeit des project.releaseRepoUrl und project.snapshotRepoUrl zu einer lokalen Maven-Repository wie folgt festgelegt:

project.ext{ 
    releaseRepoUrl = "file://${project(':').projectDir}/../mvn-repo/releases" 
    snapshotRepoUrl = "file://${project(':').projectDir}/../mvn-repo/snapshots" 
} 
+0

Ist dies immer noch der richtige Weg, um Konfigurationsartefakte im selben Projekt zu unterstützen? – cmcginty

+0

Habe in diesem Bereich keine wichtigen Feature-Updates gefunden, also denke ich, es ist immer noch gültig und der beste Weg, es zu tun. – rodion

Antwort

2

Könnte es sein, dass Sie nicht Endlager für uploadGuiceArchives wie Sie definiert haben hat für uploadArchives getan?

+0

Das war es, danke! Ich konnte die Tatsache, dass die Repository-Konfiguration pro Task ist, nicht erkennen. – rodion

Verwandte Themen