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.