it-swarm.com.de

Lade Artefakt mit Gradle in Artifactory hoch

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

Hier ist meine build.gradle-Datei:

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 artifactoryPublish-Task ist der Build wie unten gezeigt 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 an Artifactory gesendet, außer den Build-Informationen.

Jede Hilfe wird sehr geschätzt.

Bearbeiten:

Wie JBaruch erwähnt, habe ich hinzugefügt

apply plugin: 'maven-publish'

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

und voreingestellter Abschnitt zur Artefaktaufgabe

defaults {
   publications ('mavenJava')
}

Jetzt gehts.

Vielen Dank

66
tuncaysenturk

Das liegt daran, dass Sie keine publications haben. Das artifactory-publish Plugin arbeitet mit maven-publish Plugin und lädt publications hoch.

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

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

46
JBaruch

Ich habe das funktioniert. Ich habe tatsächlich ein bereits erstelltes Glas verwendet, daher verwende ich den unten angegebenen Code, um mein Glas anzugeben, das hochgeladen werden soll:

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

Dies hat bei mir mit dem Befehl gradle clean build publish funktioniert.

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
        }
    }
}
1
gary69

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()
}

Artifactory-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 für die 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
1
grep

Es ist auch möglich, publishConfigs zu verwenden, anstatt Publikationen explizit zu definieren:

artifactory {
    contextUrl = artifactoryUrl
    publish {
        repository {
            repoKey = 'libs-releases'
            username = artifactory_user
            password = artifactory_password
        }
        defaults {
            publishConfigs('archives')
        }
    }
}

Die JAR- und POM-Datei wird automatisch abgerufen. Wenn Sie weitere JARs erstellen (z. B. für Sources oder Javadoc), müssen Sie sie nur zur Konfiguration archives hinzufügen:

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives sourcesJar
    archives javadocJar
}
0
Helder Pereira