ग्रैडल का उपयोग करके आर्टिफ़ैक्ट में कलाकृतियों को अपलोड करें


84

मैं ग्रैडल और आर्टिफ़ैक्टिव के लिए नौसिखिया हूं और मैं आर्टिफ़ैक्ट्री के लिए एक जार फ़ाइल अपलोड करना चाहता हूं।

यहाँ मेरी build.gradleफ़ाइल है:

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
}

artifactoryPublishकार्य चलाने के बाद , बिल्ड नीचे दिखाए अनुसार सफल है:

> 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

हालाँकि, बिल्ड जानकारी के अलावा आर्टिफ़ैक्ट्री के लिए कुछ भी नहीं भेजा गया है।

किसी भी प्रकार के मदद की बहुत सराहना की जाएगी।

संपादित करें:

जैसा कि JBaruch ने उल्लेख किया है, मैंने जोड़ा है

apply plugin: 'maven-publish'

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

और आर्टिफैक्ट कार्य के लिए डिफॉल्ट सेक्शन

defaults {
   publications ('mavenJava')
}

अब यह काम कर रहा है।

धन्यवाद


2
बहुत मददगार सवाल और अपडेट के लिए धन्यवाद। एक नोट जिसने मुझे मदद की: defaultsवास्तव में अंदर जाता है artifactory.publish, न कि केवल रूट artifactoryकार्य में।
रयान वॉल्स

3
मैंने इसे एक ब्लॉग में संक्षेप में प्रस्तुत किया है: buransky.com/scala/…
Rado Buransky

1
जब मैं इसे पाने की कोशिश करता हूं तो मुझे: Error:(x, 0) Could not find property 'java' on SoftwareComponentInternal set.क्या आप पूरी स्क्रिप्ट पोस्ट कर सकते हैं?
निमरोड दयाण

मैं एक कोड अपलोड करने के लिए उपरोक्त कोड लिख रहा हूं, जिसे मैंने अपने gradle फ़ोल्डर (gradle / sample.jar) में रखा है, मैं निष्पादित करता हूं और देखता हूं कि केवल बिल्ड जानकारी अपलोड हो रही है। मुझे 2 संदेह हैं। सबसे पहले, हम कहां निर्दिष्ट कर रहे हैं कि किस जार को अपलोड करना है, हमने कहीं भी पथ निर्दिष्ट किया है। दूसरे, अगर मैं आर्टिफिकेशन में डिफ़ॉल्ट सेक्शन लिखता हूं। अप्रकाशन में, मुझे एरर एरर मिलती है: (82, 0) टाइप 'पब्लिशिंगटेक्स्टेंशन' का एक्सटेंशन मौजूद नहीं है। वर्तमान में पंजीकृत एक्सटेंशन प्रकार: [DefaultExtraPropertiesExtension, DefaultArtifactPublicationSet_Decorated .. कोई समाधान ??
5:16 पर

जब तक हमारे पास apply plugin: 'maven'pom फाइल बनती है और जब तक हमारे पास 'apply plugin: 'maven-publish'जार फाइल प्रकाशित होती है। और मेरे पास नहीं था publishing.publications.mavenJava(MavenPublication) { from components.java }। हालाँकि आपके पास है default {publications ('mavenJava'); publishConfigs('archives', 'published') }
रविकांत

जवाबों:


55

ऐसा इसलिए है क्योंकि आपके पास कोई नहीं है publicationsartifactory-publishप्लगइन के साथ काम करता maven-publishप्लगइन और अपलोड publications

यदि आप पुराने मावेन प्लगइन के साथ काम करना पसंद करते हैं , तो आपको artifactoryप्लगइन की आवश्यकता है , न कि artifactory-publish

आधिकारिक डॉक्स के "वर्किंग विद ग्रैडल" पृष्ठ के अवलोकन भाग पर एक नज़र डालें ।


5
हाय JBrauch आपकी प्रतिक्रिया के लिए धन्यवाद। मैंने पोस्ट में कमी वाले हिस्सों को जोड़ा है ताकि दूसरों को एक ही समस्या हो।
ट्यूनीसेन्टर्क

7
मुझे उम्मीद है कि आर्टिफ़ैक्ट से कोई व्यक्ति आता है ... क्योंकि maven-publishप्रलेखन में शून्य उल्लेख है । मदद के लिए धन्यवाद @Jararuch! jfrog.com/confluence/display/RTF/…
रयान वॉल्स

आप मुझे "किसी से कलाकारी" पर विचार कर सकते हैं :) यहाँ आधिकारिक प्रलेखन में स्पष्टीकरण दिया गया है। इसे उत्तर में जोड़ना।
जेबरच

5
@JBaruch अभी भी न तो दो लिंक किए गए पृष्ठों का उल्लेख करता है maven-publish। मैं @Ryan से सहमत हूं कि यह मददगार होगा। लेकिन यहाँ उत्तर के लिए धन्यवाद
हेनरिक फ़िल्टर

वर्तमान doc उदाहरण Android Studio gradle plugin v0.9 का उपयोग करते हैं जो पूरी तरह से पुराना और पदावनत है, नवीनतम v1.5.0 है। बेशक, उदाहरण इस संस्करण के साथ काम नहीं करते हैं: /
रेमी डेविड

8

मुझे यह काम मिला। मैं वास्तव में पहले से ही निर्मित जार का उपयोग कर रहा था इसलिए मैं अपने जार को निर्दिष्ट करने के लिए नीचे दिए गए कोड का उपयोग कर रहा हूं जिसे अपलोड किया जाना है:

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

7

आपको प्लगइन्स की आवश्यकता है:

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

आर्टिफैक्ट से परियोजना बनाने और जार को पुनः प्राप्त करने के लिए:

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 {
    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

        }
    }
}

और प्रकाशन के लिए:

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

gradle.properties

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

इसलिए सब कुछ सरल है। यदि आप अपना जार अपलोड करना चाहते हैं:

gradle artifactoryPublish

4

कमान के साथ मेरे लिए यही काम किया 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
        }
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.