एक ही फ़ाइल में प्रोजेक्ट का नाम / समूह / संस्करण, प्लस {स्रोत, लक्ष्य} संगतता कैसे सेट करें?


83

मैं अपनी परियोजनाओं के लिए ग्रेडेल के उपयोग को सामान्य बनाने का इरादा रखता हूं और हर जगह एक ही बिल्ड फ़ाइल का पुन: उपयोग करना चाहूंगा। दुर्भाग्य से, मुझे प्रवास को आसान बनाने के लिए, एक फ़ाइल में $ विषय में वर्णित गुणों को परिभाषित करने की कोशिश करने में परेशानी होती है।

यह 1.6 है।

मैंने जो प्रयास किया है, वह सभी प्रयासों में विफल रहा है:

  • gradle.properties: नाम को संशोधित नहीं किया जा सकता (केवल पढ़ने के लिए settings.gradle, रूट प्रोजेक्ट नाम को ओवरराइड और ओवरराइड करना होगा !); {source,target}Compatibilityखाते में नहीं लिया गया;
  • settings.gradle: {source,target}Compatibilityया तो खाते में नहीं लिया!

तो, इसे प्राप्त करने का सही तरीका क्या है? मैंने अब तक क्या प्रयास किया है gradle.properties:

group = something
name = whatever  # cannot do!
version = whatever
sourceCompatibility = whatever # not taken into account!

और में settings.gradle:

sourceCompatibility = "whatever";  # not taken into account!

संपादित करें , "नाम" समस्या को हल नहीं किया जा सकता है; बाकी के लिए, मैंने एक और फ़ाइल का उपयोग किया है जो मैं बिल्ड फ़ाइल में लागू करता हूं। "नाम" संभालना वास्तव में सही नहीं है: /

EDIT 2 यह अब 2014 है और 1.12 और ग्रेडल है, और समस्या अभी भी हल नहीं हुई है ...


1
FYI करें, build.gradle फ़ाइल में प्रोजेक्ट नाम को कस्टमाइज़ करने में असमर्थता वर्तमान में एक सुधार अनुरोध है: issues.gradle.org//browse/GRADLE-2412
रयान नेल्सन

जवाबों:


126

gradle.properties:

theGroup=some.group
theName=someName
theVersion=1.0
theSourceCompatibility=1.6

settings.gradle:

rootProject.name = theName

build.gradle:

apply plugin: "java"

group = theGroup
version = theVersion
sourceCompatibility = theSourceCompatibility

तो आप बिल्ड में फिर से उपयोग करना चाहते हैं? आप कर सकते हैं apply from: "other.gradle"या apply from: "http://my.server.com/other.gradle"। ध्यान दें कि उत्तरार्द्ध वर्तमान में कैश नहीं है। कैशिंग प्राप्त करने के लिए, आपको एक बाइनरी प्लगइन लिखना होगा ।
पीटर निडरविसर

हां, मैं apply from:समाधान का उपयोग करता हूं ; हालाँकि इससे नाम की समस्या का समाधान नहीं होता है :(
fge

1
मुझे लगता है कि नवीनतम ग्रेडेल में आप एक प्लगइन settings.gradleभी लगा सकते हैं। हालाँकि, बिल्ड में समान प्रोजेक्ट नाम सेट करने के लिए प्लगइन का उपयोग करना थोड़ा अजीब लगता है।
पीटर निडरवेयर्स

ध्यान दें कि इन सभी गुणों को init.gradleअपने उपयोगकर्ता होम (उपयोगकर्ता गाइड देखें) से सेट करना संभव है ।
पीटर निडरविसर

1
आपको gradle.properties में वैरिएबल को परिभाषित करने और settings.gradle में उपयोग करने की आवश्यकता नहीं है। आप बस settings.gradle rootProject.name = "someName" में उल्लेख कर सकते हैं। सेटिंग्स में इसे दोहरे उद्धरण चिह्नों में निर्दिष्ट करना सुनिश्चित करें।
गोपीनाथ MR

22

मुझे एक समान समस्या का हल मिला। मैं ग्रेडल 1.11 (अप्रैल, 2014 के अनुसार) का उपयोग कर रहा हूं। परियोजना का नाम सीधे settings.gradleफ़ाइल में निम्नानुसार बदला जा सकता है :

  rootProject.name='YourNewName'

यह सही विरूपण साक्ष्य के साथ रिपॉजिटरी (Artifactory w / मेरे लिए इसका प्लगइन) पर अपलोड करने का ख्याल रखता है।


2
यह समाधान मल्टी-प्रोजेक्ट बिल्ड के लिए आदर्श से कम है।
asandroq

@asandroq, चूंकि आपके पास केवल एक ही सेटिंग फ़ाइल हो सकती है, आपको वहां से उप मॉड्यूल का नाम बदलना होगा। यह केंद्रीय है, लेकिन यह काम करता है।
स्नीकोलास

19

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

jar {
    baseName "core"
}

इस प्रॉपर्टी सेट के साथ, भले ही मेरे प्रोजेक्ट का नाम "फू" है, जब मैं चलाता हूं gradle install, तो coreइसके बजाय नाम के साथ कलाकृतियों को प्रकाशित किया जाता है foo


1
प्रोजेक्ट नाम का उपयोग करने वाले अन्य सभी कार्यों में मदद नहीं करता है, और क्लैशिंग नामों पर अतिरिक्त भ्रम पैदा कर सकता है ...
क्वार्ट्ज

4

जाहिर तौर पर settings.gradleऐसा कुछ इस तरह से संभव होगा ।

rootProject.name = 'someName'
gradle.rootProject {
    it.sourceCompatibility = '1.7'
}

मुझे हाल ही में सलाह मिली कि एक परियोजना संपत्ति को एक क्लोजर का उपयोग करके सेट किया जा सकता है जिसे बाद में प्रोजेक्ट उपलब्ध होने पर बुलाया जाएगा।


0

ग्रैडल कोस्टलिन डीएसएल के साथ बिल्डस्कैन का उपयोग करें यहां पूर्ण काम किया गया उदाहरण देखें : गिटहब डगरगेरोक / स्प्रिंग-फू-जाफु-उदाहरण बिल्ड एसकेएस / एसकेवाई / मुख्य / जावा / ग्लोबल्स.कैट

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