Laden Sie Artefakte mit Gradle in Artifactory hoch


84

Ich bin ein Neuling bei Gradle und Artifactory und möchte eine JAR-Datei zu Artifactory hochladen.

Hier ist meine build.gradleDatei:

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'maven'
apply plugin: 'artifactory-publish'

groupId = 'myGroup'
version = '1.0'
def artifactId = projectDir.name
def versionNumber = version

artifactory {
    contextUrl = 'http://path.to.artifactory' // base artifactory url
    publish {
        repository {
            repoKey = 'libs-releases'   // Artifactory repository key to publish to
            username = 'publisher'      // publisher user name
            password = '********'       // publisher password
            maven = true
        }
    }
}

artifactoryPublish { 
    dependsOn jar
}

Nach dem Ausführen der artifactoryPublishAufgabe ist der Build wie folgt erfolgreich:

> gradle artifactoryPublish  --stacktrace
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar
:artifactoryPublish
Deploying build info to: http://path.to.artifactory/api/build

BUILD SUCCESSFUL

Total time: 7.387 secs

Es wird jedoch nichts außer den Build-Informationen an Artifactory gesendet.

Jede Hilfe wird sehr geschätzt.

Bearbeiten:

Wie JBaruch erwähnte, habe ich hinzugefügt

apply plugin: 'maven-publish'

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}

und standardmäßig Abschnitt zu künstlicher Aufgabe

defaults {
   publications ('mavenJava')
}

Jetzt funktioniert es.

Vielen Dank


2
Vielen Dank für die sehr hilfreiche Frage und das Update. Eine Anmerkung, die mir geholfen hat: defaultsgeht tatsächlich hinein artifactory.publish, nicht nur in der Root- artifactoryAufgabe.
Ryan Walls

3
Ich habe dies in einem Blog zusammengefasst: buransky.com/scala/…
Rado Buransky

1
Wenn ich es versuche, bekomme ich: Error:(x, 0) Could not find property 'java' on SoftwareComponentInternal set.Könnten Sie bitte das vollständige Skript posten?
Nimrod Dayan

Ich schreibe den obigen Code zum Hochladen eines JARs, das ich in meinen Gradle-Ordner (gradle / sample.jar) gelegt habe. Ich führe es aus und sehe, dass nur Build-Informationen hochgeladen werden. Ich habe 2 Zweifel. Erstens, wo geben wir an, welches Glas hochgeladen werden soll, haben wir den Pfad nirgendwo angegeben. Zweitens, wenn ich den Standardabschnitt in artifaction.publish schreibe, erhalte ich den Fehler Fehler: (82, 0) Erweiterung vom Typ 'PublishingExtension' existiert nicht. Derzeit registrierte Erweiterungstypen: [DefaultExtraPropertiesExtension, DefaultArtifactPublicationSet_Decorated .. Irgendeine Lösung?
Sver

Solange wir haben, wird apply plugin: 'maven'die POM-Datei generiert und wenn wir haben, wird 'apply plugin: 'maven-publish'die JAR-Datei veröffentlicht. Und das musste ich nicht haben publishing.publications.mavenJava(MavenPublication) { from components.java }. Allerdings muss man haben default {publications ('mavenJava'); publishConfigs('archives', 'published') }
Ravikanth

Antworten:


55

Das liegt daran, dass Sie keine haben publications. Das artifactory-publishPlugin funktioniert mit maven-publishPlugin und Uploads publications.

Wenn Sie lieber mit dem alten Maven-Plugin arbeiten , benötigen Sie kein artifactoryPluginartifactory-publish .

Schauen Sie sich den Übersichtsteil auf der Seite "Arbeiten mit Gradle" der offiziellen Dokumente an.


5
Hallo JBrauch Danke für deine Antwort. Ich habe die fehlenden Teile zum Beitrag hinzugefügt, um anderen zu helfen, das gleiche Problem zu haben.
Tuncaysenturk

7
Ich hoffe, jemand von Artifactory kommt vorbei ... weil es maven-publishin der Dokumentation keine Erwähnung gibt . Danke für die Hilfe @JBaruch! jfrog.com/confluence/display/RTF/…
Ryan Walls

Sie können mich als "jemanden von artfactory" betrachten :) Hier ist die Erklärung in der offiziellen Dokumentation. Hinzufügen zur Antwort.
JBaruch

5
@JBaruch noch keine der beiden verlinkten Seiten erwähnt maven-publish. Ich stimme @Ryan zu, dass es hilfreich wäre. Aber danke für die Antwort hier
Heinrich Filter

Aktuelle Dokumentbeispiele verwenden das Android Studio Gradle Plugin v0.9, das vollständig veraltet und veraltet ist. Das neueste ist v1.5.0. Natürlich funktionieren die Beispiele nicht mit dieser Version: /
Rémy DAVID

8

Ich habe das zum Laufen gebracht. Ich habe tatsächlich ein bereits erstelltes Glas verwendet, daher verwende ich den folgenden Code, um mein Glas anzugeben, das hochgeladen werden soll:

publishing {
    publications {
        mavenJava(MavenPublication) {
            // from components.java
            artifact file("path/jar-1.0.0.jar")
        }
    }
}

7

Sie benötigen Plugins:

apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'maven'
apply plugin: 'maven-publish'
apply plugin: 'com.jfrog.artifactory'

Projekt zu bauen und Gläser von Artifactory abzurufen:

buildscript {
    repositories {
        maven {
            url 'http://[IP]:[PORT]/artifactory/gradle-dev'
            credentials {
                username = "${artifactory_user}"
                password = "${artifactory_password}"
            }
        }
        mavenCentral()
    }
    dependencies { classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.5.4" }
}

repositories {
    mavenCentral()
    mavenLocal()
}

Künstliche Konfigurationen:

artifactory {
    contextUrl = "${artifactory_contextUrl}"
    publish {
        repository {
            repoKey = 'gradle-dev-local'
            username = "${artifactory_user}"
            password = "${artifactory_password}"
            maven = true
        }
        defaults {
            publications('mavenJava')
        }
        publishBuildInfo = true
        publishArtifacts = true
        publishPom = true
    }
    resolve {
        repository {
            repoKey = 'gradle-dev'
            username = "${artifactory_user}"
            password = "${artifactory_password}"
            maven = true

        }
    }
}

und zur Veröffentlichung:

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}

gradle.properties

artifactory_user=publisher
artifactory_password=*****
artifactory_contextUrl=http://IP:PORT/artifactory

Also ist alles einfach. Wenn Sie Ihr Glas hochladen möchten:

gradle artifactoryPublish

4

Das hat bei mir mit dem Befehl funktioniert gradle clean build publish

apply plugin: 'maven-publish'
apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'maven'

group = 'com.mine'
version = '1.0.1-SNAPSHOT'

repositories{
    mavenCentral()
}

dependencies {
    compile gradleApi()
    compile localGroovy()
    compile 'com.google.guava:guava:27.0-jre'
    testCompile 'junit:junit:4.12'
    //compile 'org.apache.commons:commons-lang3:3.8.1'
}

publishing {
    repositories {
        maven {
            url = 'https://artifactory.mine.net/artifactory/my-snapshots-maven'
            credentials {
                username 'user'
                password 'password'
            }
        }
    }
    publications{
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.