আপনি কিভাবে গ্রেডেল প্রকল্পের মাভেন আর্টিক্ট আইডি সেট করবেন?


89

গ্রেড ম্যাভেন-প্রকাশিত প্লাগইন এর ডকুমেন্টেশন থেকে , এটি স্পষ্ট যে আপনি প্রকল্পটির groupIdএবং versionএর মধ্যে সরাসরি সেট করেছেন build.gradle:

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

তবে, artifactIdআপনি যে ফোল্ডারের মধ্যে কাজ করছেন সেটি নাম থেকে নেওয়া হবে বলে মনে হয়। artifactIdসুস্পষ্টভাবে সেট করার কোনও উপায় আছে কি ?

উত্তর:


87

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'
}

হাই পিটার, প্রতিক্রিয়া জন্য ধন্যবাদ। আমি যে ডকুমেন্টেশনটির সাথে লিঙ্ক করেছি, সেটির দিকে তাকান যা is৫.৪ও রয়েছে, স্পষ্টতই আমাদের ডকটির বিভিন্ন সংস্করণ রয়েছে।
আরমান্ড

আহ, এটি 2.0 ডক এর 65.2.3 এ আছে। আমার বোঝার দক্ষতা স্পষ্টতই দুর্বল; 'আর্টিফ্যাক্ট' - পৃষ্ঠাটি অনুসন্ধান করার জন্য পৃষ্ঠাটি অনুসন্ধান করার সময় আমি কীভাবে এটি মিস করেছি তা আমি জানি না।
আরমান্ড

এটি আপনার সংযুক্ত অধ্যায়ের 65.4 উদাহরণ
পিটার নিডারউইজার

13
আপনি যদি প্রকল্পের নামটি (যা একটি পৃথক প্রশ্নের ধরণ) পরিবর্তন করতে চান তবে আপনি এটি করতে পারেন settings.gradle(উদাঃ rootProject.name = "something")।
পিটার নিডারউইজার

4
গুরুত্বপূর্ণ: প্রজেক্টের নাম সেটিংস.gradle এ সেট করা (যেমন rootProject.name = "org.myorg.myproject") জেনকিনস ওয়ার্কস্পেস ফোল্ডারের নামটিতে একটি গ্রুপআইড ভিত্তিক ডিফল্টরূপে একটি গ্রুপআইড-ভিত্তিক আপলোড করার সময় সমস্যা সমাধানের জন্য গুরুতর ছিল।
ফররুখ নাজমি

16

রুট settings.gradleফাইল সম্পর্কিত, আপনি রুট প্রকল্পের নামটি এর সাথে পরিবর্তন করতে পারেন:

rootProject.name = 'myproject'

তবে আপনি যদি কোনও উপ-প্রকল্পের নাম পরিবর্তন করতে চান (উদাহরণস্বরূপ, অ্যান্ড্রয়েডস্টুডিও প্রকল্পের ডিফল্ট "অ্যাপ" উপ-প্রকল্প), আপনি মূল settings.gradleফাইলটিতে এই জাতীয় কিছু করতে পারেন :

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

@ ফাররুখনাজমি একটি মন্তব্যে যেমন উল্লেখ করেছেন, সেটিংস.gradle ফাইলে রুটপ্রজেক্ট.নাম যুক্ত করা জেনকিন্সের সাথে নির্মাণের সময় আর্টিফ্যাক্টআইডি জেনকিন্স কাজের নাম হয়ে যায়।
পাদদেশ

8

এটি মেভেন-প্রকাশিত প্লাগইনটির সঠিক উত্তর । এটি পুরানো মেভেন প্লাগইনটির উত্তরসূরি হিসাবে উদ্দিষ্ট ।

যদি আমি যেমন থাকি তবে আপনি পুরনো প্লাগইনটির সাথে আটকে থাকেন, "গ্রেডেল প্রকল্পের জন্য মাভেন আর্টিক্ট আইডিটি কীভাবে সেট করব" এর সঠিক উত্তরটি হ'ল:

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

4
এটি একটি খারাপ ধারণা। এখানে এটি করার অর্থ হ'ল আপনি অন্য যে কোনও জায়গা থেকে অপেক্ষাকৃত প্রকল্পের বিরুদ্ধে ঘোষণা করেছেন যে কোনও নির্ভরতা যদি তাদের জন্য পম তৈরি হয় তখন সঠিক শিল্পকর্মটি পাবেন না।
কেবারনেট

আমি এটিকে সত্য বলে মনে করি না (এটির মোকাবিলার পরে 18 মাস হয়ে গেছে) তবে যদি সঠিক উত্তর হয় তবে আপনার মডেন প্লাগইনটিকে আরও ভাল মডেলের সাথে আপগ্রেড করতে হবে। ধন্যবাদ!
ম্যাথু মার্ক মিলার

6

যদি আপনার কাছে কোনও মাল্টি-মডিউল প্রকল্প রয়েছে এবং আপনি শিল্পকর্মগুলির নামগুলি ডিরেক্টরি থেকে পৃথক করতে চান (যা সেটিংস এগ্র্যাডেলে সেট করা আছে), তবে আমি মনে করি প্রতিটি উপ-প্রকল্পের জন্য জার ব্লক থাকার চেয়ে আরও ভাল উপায়, এবং সেখানে আপনি বেসনাম লিখতে পারেন, যা হস্তান্তরিত-আইডি হবে। তারপরে, প্রতিটি উপ-প্রকল্পের জন্য প্রকাশনা / প্রকাশনা ব্লকে পুনরায় লেখার পরিবর্তে আপনি কেবলমাত্র মূল বিল্ড এড্রেডলে একবার লিখবেন:

প্রতিটি উপ-প্রকল্প build.gradle জন্য:

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

মূল বিল্ড.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

    }

সংরক্ষণাগারগুলি
বেস নামটির

গ্রেডল / অ্যান্ড্রয়েডের আরও সাম্প্রতিক সংস্করণগুলিতে, আমি সন্ধান করছি যে বেসপ্লাগইন কনভেনশন দ্বারা সরবরাহিত একটি সেটআর্কাইভসবেইনম () পদ্ধতি রয়েছে যা সরাসরি অ্যাসাইনমেন্টের জায়গায় পাওয়া যায়, এবং এটি আমার জন্য অ্যান্ড্রয়েড গ্রেডল প্লাগইন 3.1.4 এবং গ্রেডেল 4.10.2 এ কাজ করে on । docs.gradle.org/current/javadoc/org/gradle/api/plugins/…
জন

2

যাইহোক, আর্টিক্ট আইডিটি আপনি যে ফোল্ডারের মধ্যে কাজ করছেন তার নাম থেকে নেওয়া হয়েছে বলে মনে হয়। স্পষ্টভাবে শিল্পকলা সেট সেট করার কোন উপায় আছে?

এর একটি সহজ উত্তর হ'ল সেটটি সেট করা 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"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.