Gradle Artifactory Plugin - Wie können Artefakte aus mehreren Modulen in einem Projekt veröffentlicht werden?

8

Ich habe ein Projekt mit einem SharedCode (Java) -Modul und ein Android (Android-Bibliothek) -Modul, das vom SharedCode -Modul abhängt. Ich möchte ein jar Artefakt vom SharedCode Modul und ein aar Artefakt vom Android Modul veröffentlichen. Ich kann nicht herausfinden, wie ich meine build.gradle -Dateien erstellen soll, damit beide Module in Artifactory publizieren, wenn der artifactoryPublish -Task ausgeführt wird. Momentan veröffentlicht nur das SharedCode -Modul sein Artefakt an Artifactory.

Meine build.gradle -Dateien sind wie folgt. Beachten Sie, dass der maven-publish -Aspekt meiner build.gradle -Dateien korrekt zu sein scheint, denn wenn ich die publishToMavenLocal -Aufgabe ausführe, sehe ich die Artefakte von beiden Modulen in meinem lokalen Maven-Ordner (d. H.% Co_de%).

Erstens ist die '~/.m2/repository' Datei in meinem build.gradle Modul wie folgt:

%Vor%

Zweitens ist die SharedCode Datei in meinem build.gradle Modul wie folgt:

%Vor%

Wenn ich die Android Aufgabe auf der root-, Projektebene oder auf der artifactoryPublish -Modulebene ausführe, sehe ich die Ausgabe wie folgt:

%Vor%

Beachten Sie, dass in diesem Fall nur das SharedCode Artefakt veröffentlicht wird.

Wenn ich die Aufgabe SharedCode auf der Modul-Ebene artifactoryPublish ausführe, sehe ich die Ausgabe wie folgt:

%Vor%

Beachten Sie, dass in diesem Fall keine Artefakte veröffentlicht werden.

    
Adil Hussain 07.03.2016, 18:32
quelle

3 Antworten

2

Wenn Sie nach Artefakt-Multiprojekt-Beispielen in ihrem GitHub Repo suchen, scheint es, dass nur das Root-Projekt einen artifactory{...} -Konfigurationsabschnitt haben muss, im Gegensatz zu jedem Unterprojekt, wie Sie es getan haben.

Außerdem, wenn Sie publications('SharedCode') im Root-Projekt deklarieren, scheint das Artefact-Plugin nach einer Publikation namens sharedCode in jedem Unterprojekt zu suchen.

Ich würde versuchen:

  • Entfernen Sie den Abschnitt artifactory{...} von android build.gradle

  • Benennen Sie die android-Publikation auch in sharedCode um (oder etwas allgemeineres in beiden Projekten)

RaGe 09.03.2016, 22:39
quelle
3

Also ich habe endlich alles funktioniert! Besonderer Dank an @RaGe, dass sie mir auf dem Weg geholfen haben. Zu beachten ist, dass der artifactory -Block in der root-level build.gradle -Datei des Projekts und nicht in der build.gradle -Datei der einzelnen Module enthalten sein muss. Außerdem müssen Sie artifactoryPublish.skip=true zur root-level build.gradle -Datei des Projekts hinzufügen. In diesem GitHub-Repo finden Sie ein möglichst vollständiges und dennoch minimales Beispiel:

Ссылка

Falls die Verbindung jemals aufhört zu arbeiten, füge ich auch hier den Inhalt der build.gradle Dateien ein. Erstens, die root-level build.gradle -Datei des Projekts:

%Vor%

Zweitens, die Datei build.gradle des Moduls Android :

%Vor%

Drittens und schließlich die build.gradle -Datei des SharedCode (Java) -Moduls:

%Vor%

Das ist es!

    
Adil Hussain 16.03.2016 19:34
quelle
3

Version 4.2.0 des Gradle Artifactory Plugins wurde letzte Woche veröffentlicht und hat mehrere Deployment von Artifactory Repositories hinzugefügt. Jetzt können Sie einfach einen Artefaktabschluss mit einem anderen Repository für verschiedene Module des Projekts definieren.

    
Eyal Ben Moshe 09.04.2016 04:22
quelle