2015-05-18 5 views
6

(यह उपयोग कर रहा है Gradle 2.4)मैं "नियमित" जार के छाया जार _instead_ उत्पन्न करने के लिए ग्रेडल के निर्माण कार्य को कैसे बना सकता हूं?

अपनी परियोजनाओं में से एक के लिए, कई submodules में विभाजित है, मैं shadow plugin जो मेरी जरूरतों के लिए बहुत अच्छी तरह से काम करता है का उपयोग करें; इसमें एक मुख्य है, और जैसा कि प्लगइन के रीडमे द्वारा अनुशंसित है, मैं इसके साथ संयोजन में एप्लिकेशन प्लगइन का उपयोग करता हूं ताकि मेन-क्लास मेनिफेस्ट में उत्पन्न हो, सभी अच्छी तरह से काम करते हैं।

अब, यह एक सोनारक्यूब प्लगइन प्रोजेक्ट है, और मैं gradle sonar packagin plugin का भी उपयोग करता हूं (सफलतापूर्वक!)। और यह प्लगइन क्या करता है, जब आप ./gradlew build, "नियमित" जार की बजाय सोनार प्लगइन उत्पन्न करते हैं।

मैं यहाँ मेरी subproject के लिए भी ऐसा ही करने, सिवाय इसके कि मैं इसे "नियमित" प्लगइन के स्थान पर केवल छाया जार प्लगइन उत्पन्न करना चाहते हैं इच्छा ... अभी मैं दोनों इस सरल फ़ाइल का उपयोग कर उत्पन्न:

buildscript { 
    repositories { 
     jcenter(); 
    } 
    dependencies { 
     classpath(group: "com.github.jengelman.gradle.plugins", 
      name:"shadow", version:"1.2.1"); 
    } 
} 

apply(plugin: "application"); 
apply(plugin: "com.github.johnrengelman.shadow"); 

dependencies { 
    // whatever 
} 

mainClassName = //whatever 

artifacts { 
    shadowJar; 
} 

// Here is the hack... 

build.dependsOn(shadowJar); 

मैं इस फ़ाइल को कैसे संशोधित करूं ताकि केवल छाया जार उत्पन्न हो और नियमित जार न हो?

+0

बेहतर उपयोग करने के लिए 'assemble.dependsOn (shadowJar);' ताकि आपके परीक्षण भी shadowJar का उपयोग करें। पाइपलाइन चित्र बनाने के लिए देखें: https://docs.gradle.org/current/userguide/java_plugin.html – Zasz

उत्तर

8

आप अपने Gradle स्क्रिप्ट के निम्नलिखित लाइनों को जोड़कर जार कार्य अक्षम कर सकते हैं:

// Disable the 'jar' task 
jar.enabled = false 

तो, जब Gradle स्क्रिप्ट पर कार्य करते हैं, यह दिखा देंगे

: जार को छोड़ दिया

आप सभी उप-परियोजनाओं कॉन्फ़िगर करना चाहते हैं, तो आप निम्नलिखित आपके जड़ में

build.gradle जोड़ सकते हैं
subprojects { 

    // Disable the 'jar' task 
    tasks.jar.enabled = false 

} 
+0

ठीक है, यह केवल उस विशेष परियोजना के लिए है, लेकिन हम्म, वास्तव में मुझे किसी भी परियोजना के लिए जार की आवश्यकता नहीं है ... – fge

+0

@fge वहाँ भी पूरी तरह से काम निकालने के लिए एक विकल्प है, लेकिन आप यह सुनिश्चित करना मैप किया जा करने के लिए है कि सभी कार्य है कि जार कार्य पर निर्भर होता है (आसान उसे निष्क्रिय करने) – MJSG

+0

ठीक है, मैं जैसे ही कोशिश करता हूँ मैं ऐसा करने का समय प्राप्त करें लेकिन यह दृष्टिकोण बहुत ही आशाजनक दिखता है! पहले से ही ऊपर उठाया गया है, मैं आपको सूचित रखूंगा ... – fge

संबंधित मुद्दे

 संबंधित मुद्दे