2014-03-12 12 views
53

Ich bin ein Neuling zu Gradle und Artefactory und ich möchte eine Jar-Datei zu Artifactory hochladen. Hier ist meine build.gradle Datei.Artefakt zu Artefaktor mit Gradle hochladen

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' //The Artifactory repository key to publish to 
     username = 'publisher'  //The publisher user name 
     password = '********'  //The publisher password 
     maven = true 
    } 
    } 
} 

artifactoryPublish { 
    dependsOn jar 
} 

Nach dem Ausführen der Task artifactoryPublish 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 an Artifactory gesendet, außer den Build-Informationen.

Wie JBaruch erwähnt, ich habe hinzugefügt

apply plugin: 'maven-publish' 

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

und Standardwerte Abschnitt artifactory Aufgabe

:

Jede Hilfe wird viel

Tuncay

bearbeiten geschätzt werden

defaults { publications ('mavenJava') } 

Jetzt funktioniert es.

Dank

+2

Danke für die sehr hilfreiche Frage und das Update. Eine Anmerkung, die mir geholfen hat: 'defaults 'geht tatsächlich in' artifactory.publish', nicht nur in der root' artefactory' Aufgabe. –

+2

Ich habe dies in einem Blog zusammengefasst: http://buransky.com/scala/publish-jar-artifact-using-gradle-to-artifactory/ –

+1

Wenn ich es versuche, bekomme ich: 'Fehler: (x, 0) Konnte nicht die Eigenschaft 'Java' im SoftwareComponentInternal Set finden. Könnten Sie bitte das vollständige Skript posten? –

Antwort

37

Das ist, weil Sie keine publications haben. Die artifactory-publish plugin arbeitet mit maven-publish plugin und lädt publications. Wenn Sie es vorziehen, mit the old maven plugin zu arbeiten, benötigen Sie artifactory plugin, nicht artifactory-publish.

Werfen Sie einen Blick auf die Overview part in "Working with Gradle" page der offiziellen Dokumente.

+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 Artefactory kommt vorbei ...weil in der Dokumentation "maven-publish" nicht erwähnt wird. Danke für die Hilfe @JBaruch! http://www.jfrog.com/confluence/display/RTF/Gradle+1.6+Publishing+Artifactory+Plugin –

+0

Sie können mich als "jemanden von artfactory" betrachten :) [Hier ist] (http: //www.jfrog. com/confluence/display/RTF/Working + mit + Gradle) die Erklärung in der offiziellen Dokumentation. Hinzufügen zur Antwort. – JBaruch

6

Ich habe das funktioniert. Ich benutzte tatsächlich ein bereits erstelltes Glas, also verwende ich den folgenden Code, um mein Glas anzugeben, das heraufgeladen werden soll:

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