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:
Zweitens ist die SharedCode
Datei in meinem build.gradle
Modul wie folgt:
Wenn ich die Android
Aufgabe auf der root-, Projektebene oder auf der artifactoryPublish
-Modulebene ausführe, sehe ich die Ausgabe wie folgt:
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:
Beachten Sie, dass in diesem Fall keine Artefakte veröffentlicht werden.
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)
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:
Zweitens, die Datei build.gradle
des Moduls Android
:
Drittens und schließlich die build.gradle
-Datei des SharedCode
(Java) -Moduls:
Das ist es!
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.
Tags und Links android gradle artifactory build.gradle maven-publish