आप एक ग्रेड प्रोजेक्ट की मावेन आर्टिफिशियल आईडी कैसे सेट करते हैं?


85

ग्रेड मेवेन-पब्लिश प्लगइन के डॉक्यूमेंटेशन से , यह स्पष्ट है कि आप प्रोजेक्ट का groupIdऔर versionसीधे में सेट करते हैं build.gradle:

group = 'org.gradle.sample'
version = '1.0'

हालाँकि, artifactIdआपके द्वारा काम किए जाने वाले फ़ोल्डर के नाम से लिया जाने वाला प्रतीत होता है। क्या artifactIdस्पष्ट रूप से सेट करने का कोई तरीका है ?

जवाबों:


85

से 36.2.3। उत्पन्न POM में पहचान मान

publishing {
    publications {
        maven(MavenPublication) {
            groupId 'org.gradle.sample'
            artifactId 'project1-sample'
            version '1.1'

            from components.java
        }
    }
}

विरूपण साक्ष्य आईडी प्रोजेक्ट नाम में कॉन्फ़िगर किया गया है settings.gradle, जो बदले में परियोजना निर्देशिका के नाम के लिए चूक करता है।

आपको उपयुक्त प्लगइन की आवश्यकता होगी।

plugins {
    id 'maven-publish'
}

हाय पीटर, प्रतिक्रिया के लिए धन्यवाद। मेरे द्वारा जुड़े प्रलेखन को देखते हुए, जो कि 65.4 भी है, हमारे पास स्पष्ट रूप से डॉक्टर के विभिन्न संस्करण हैं।
आर्मंड

आह, यह 2.0 डॉक के 65.2.3 में है। मेरी समझ के कौशल स्पष्ट रूप से खराब हैं; मुझे नहीं पता कि 'विरूपण साक्ष्य' के लिए पृष्ठ खोजते समय मैंने यह कैसे याद किया।
आर्मंड

यह आपके द्वारा जुड़े अध्याय में 65.4 का उदाहरण है।
पीटर निडरविज़र जूल

13
यदि आप प्रोजेक्ट का नाम बदलना चाहते हैं (जो एक अलग प्रश्न है), तो आप ऐसा कर सकते हैं settings.gradle(जैसे rootProject.name = "something")।
पीटर निडरविज़र

2
महत्वपूर्ण: सेटिंग में प्रोजेक्ट का नाम सेट करना ।ग्रेड (जैसे rootProject.name = "org.myorg.myproject") उन समस्याओं को ठीक करने के लिए महत्वपूर्ण था जहां जेनकिंस का निर्माण जेनकींसस्पेसस्पेस फ़ोल्डर नाम के लिए एक समूह आधारित डिफ़ॉल्ट पर अपलोड कर रहा था।
फारुख नजमी

16

रूट settings.gradleफ़ाइल से संबंधित , आप रूट प्रोजेक्ट का नाम बदल सकते हैं:

rootProject.name = 'myproject'

लेकिन अगर आप एक उप-परियोजना का नाम बदलना चाहते हैं (उदाहरण के लिए, AndroidStudio प्रोजेक्ट का डिफ़ॉल्ट "ऐप" उप-प्रोजेक्ट), तो आप कुछ ऐसा कर सकते हैं, फिर भी रूट settings.gradleफ़ाइल में:

rootProject.children.each {
    it.name = ('app' == it.name ? 'MyAppName' : it.name)
}

जैसा कि @FarrukhNajmi द्वारा एक टिप्पणी में उल्लेख किया गया है, rootProject.name को settings.gradle फ़ाइल में जोड़ने से जेनकिंस के साथ निर्माण करते समय जेनकिंस जॉब का नाम बनने वाली कलाकृतियाँ बंद हो जाती हैं।
चारा

8

मावेन-पब्लिश प्लगइन के लिए यह सही उत्तर है । यह पुराने मावेन प्लगइन के उत्तराधिकारी के रूप में अभिप्रेत है ।

यदि, जैसा कि मैं हूं, आप पुराने प्लगइन के साथ फंस गए हैं, तो "कैसे मैं एक ग्रेड प्रोजेक्ट के लिए मावेन विरूपण साक्ष्य आईडी सेट करूँ" का सही उत्तर है:

uploadArchives {
    repositories {
        mavenDeployer {
            pom.artifactId = 'project-sample'
        }
    }
}

3
यह विचार अच्छा नहीं है। यहां ऐसा करने का मतलब है कि आपने परियोजना के खिलाफ अपेक्षाकृत कहीं से घोषित की गई किसी भी निर्भरता को सही विरूपण साक्ष्य नहीं मिलेगा, जब उनके लिए एक पॉम उत्पन्न होता है।
कीर्बनेट

मुझे यह याद नहीं है कि यह सच है (मुझे इससे निपटने में 18 महीने हो गए हैं) लेकिन अगर ऐसा सही उत्तर है तो बेहतर मॉडल के साथ अपने मावेन प्लगइन को नए में अपग्रेड करें। धन्यवाद!
मैथ्यू मार्क मिलर

6

यदि आपके पास एक मल्टी-मॉड्यूल प्रोजेक्ट है, और आप चाहते हैं कि कलाकृतियों का नाम निर्देशिका से अलग हो (जो सेटिंग में सेट है। क्रम में), तो मुझे लगता है कि प्रत्येक उप-परियोजना के लिए एक बेहतर ब्लॉक जार है और वहां आप बेसनेम लिख सकते हैं, जो कि आर्टवर्क-आईडी होगा। फिर, प्रत्येक उप-परियोजना के लिए प्रकाशन / प्रकाशन ब्लॉक को फिर से लिखने के बजाय, आप इसे केवल एक बार मुख्य build.gradle तरीके से लिखते हैं:

प्रत्येक उप-परियोजना build.gradle के लिए:

jar {
    baseName = 'new-artifact-name-A'  //A beacause you also have B, C modules... 
}

मुख्य build.gradle में:

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

तर्क के लिए विधि जार () नहीं मिल सका
शीतकालीन

2

एंड्रॉइड के निर्माण के लिए और जेनकिंस का उपयोग करके आर्टिफिशियल को प्रकाशित करने के लिए, मैंने ग्रुप आईडी, आर्टिफिशियल आईडी और संस्करण को कॉन्फ़िगर करने के लिए ऐप मॉड्यूल के बिल्ड.ग्रेड में नीचे की सेटिंग्स को कॉन्फ़िगर किया है ।

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    group "com.company.division.productgroup" //add group id
    version "8.8.8" //add version

    defaultConfig {

        minSdkVersion 9
        targetSdkVersion 21
        versionCode 32
        versionName "$version"
        archivesBaseName = "android-appname" //add artifact id

    }


ग्रैडल / एंड्रॉइड के अधिक हाल के संस्करणों में, मुझे पता चल रहा है कि BaseAluginConvention द्वारा प्रदान की गई एक setArchivesBaseName () विधि है जो प्रत्यक्ष असाइनमेंट के स्थान पर उपलब्ध है, और यह मेरे लिए एंड्रॉइड ग्रैजुएशन प्लगइन 3.1.4 और ग्रेडल 4.10.2 पर काम करता है । docs.gradle.org/current/javadoc/org/gradle/api/plugins/…
John Michelau

2

हालाँकि, आप जिस फ़ोल्डर में काम कर रहे हैं, उसके नाम से विरूपण साक्ष्य लिया जाता है। क्या ArtIdId को स्पष्ट रूप से सेट करने का कोई तरीका है?

इसका एक सरल उत्तर यह सेट करना है jar.baseNameजो तब निर्देशिका नाम को ओवरराइड करता है।

// changes the name of the jar from the directory name
jar.baseName = 'some_arifact_name';

यह मेरे लिए काम करने लगता है।


1

में Gradle , आप सेट कर सकते हैं jar.archiveNameकाम कर रहे फ़ोल्डर के नाम का इस्तेमाल ओवरराइड करने के लिए ...

group = 'com.example'
version = '0.0.1-SNAPSHOT'
jar.archiveName = "myproject-0.0.1-SNAPSHOT.jar"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.