मेरे पास ऐसा कार्य है जो जावा स्रोतों और इन स्रोतों से जारों का एक सेट उत्पन्न करता है (कहें, प्रोजेक्ट a
)। मैं इन जारों को निर्भर परियोजनाओं में निर्यात करना चाहता हूं (कहें, प्रोजेक्ट b
)।ग्रैडल - क्या मैं परियोजना निर्भरताओं में कार्य का आउटपुट शामिल कर सकता हूं
//a.gradle
configurations{
generatedJars
}
task generateJars(type: JavaExec) {
//generate jars ...
outputs.files += //append generated jars here
}
dependencies{
generatedJars generateJars.outputs.files
}
//b.gradle
dependencies{
project(path: ':a', configuration: 'generatedJars')
}
यह ठीक काम करता है, कि जोड़ने generateJars.outputs.files
को छोड़कर के रूप में एक निर्भरता Gradle नहीं बताता है यह generateJars
कार्य चलाने के लिए है कि जब वहाँ अभी तक उत्पन्न नहीं जार कर रहे हैं: तो यहाँ है कि मैं क्या अभी मोटे तौर पर है। मैंने कार्य को स्वयं निर्भरता के रूप में जोड़ने की कोशिश की है कि यह उसी तरह काम करेगा जब आप एक आर्टिफैक्ट कॉन्फ़िगरेशन (जैसे artifacts{ myJarTask }
) में जार/ज़िप कार्य जोड़ते हैं, लेकिन यह मुझे बताते हुए एक त्रुटि फेंकता है कि मैं नहीं कर सकता उस। बेशक मैं :b
से पहले निर्माण प्रक्रिया में कहीं generateJars
कार्य इंजेक्ट कर सकता हूं, लेकिन यह बेकार और भंगुर है, इसलिए मैं इससे बचना चाहता हूं।
मुझे लगता है कि मुझे प्रोजेक्ट के artifacts{ ... }
पर जेनरेट किए गए जार जोड़ना चाहिए, लेकिन मुझे यकीन नहीं है कि उन्हें कैसे निर्भर परियोजनाओं के लिए दृश्यमान बनाना है। क्या इसे हासिल करने का एक बेहतर तरीका है?
निर्भर परियोजनाओं (परियोजना b
) परियोजना a
के जेनरेट किए गए जार को इंगित करने के लिए इंटेलिजे आईडीईए मॉड्यूल क्लासपाथ स्थापित करने की आवश्यकता होगी। बल्कि इस (छद्म कोड) की तरह कुछ:
//b.gradle
idea{
module{
scopes.COMPILE.plus += project(path: ':a', configuration: 'generatedJars').files
}
}
अब तक मैं बस पर :a
के :b
में generatedJars
एक परियोजना निर्भरता को जोड़ने की कोशिश की है, लेकिन आइडिया प्लगइन बस एक मॉड्यूल-निर्भरता के रूप में मॉड्यूल :a
कहते हैं और कहा कि मान लिया गया है यह अपने जेनरेट किए गए जार (जो शायद एक सही धारणा है) निर्यात करता है, इसलिए जेनरेट किए गए जार :b
के क्लासपाथ में नहीं जोड़ते हैं।
किसी भी मदद की सराहना की जाएगी!
धन्यवाद। कार्य को 'कलाकृतियों' में जोड़ना मॉड्यूल के भीतर अच्छी तरह से woks, लेकिन मैं नहीं देखता कि मैं उन जारों को परियोजना 'बी' (उन्हें प्रकाशित किए बिना) से कैसे संदर्भित कर सकता हूं। हां, केवल स्रोत उत्पन्न करना और उन्हें मॉड्यूल स्रोत के रूप में निर्यात करना संभव है। यह काम करना चाहिए, लेकिन यह आईडीईए के लिए अतिरिक्त काम करता है, इसलिए मुझे आशा थी कि इसे किसी भी तरह से बाधित किया जा सके। हुकिंग 'विचार मॉड्यूल -> जेनरजर्स के काम को अच्छी तरह से बनाने के लिए, मुझे' बी: विचार मॉड्यूल -> ए: विचार मॉड्यूल 'जोड़ने की भी आवश्यकता है, और मेरे पास लगभग 3 मॉड्यूल हैं जिन्हें सभी को करने की आवश्यकता है। मैं उम्मीद कर रहा था कि मैं इसे किसी भी तरह से स्वचालित संकल्प के लिए सेट कर सकता हूं। – rodion
विज्ञापन 1. 'प्रोजेक्ट (पथ: 'ए', कॉन्फ़िगरेशन: 'जेनरेट जार')' –
विज्ञापन 2. क्या "अतिरिक्त काम" मामला है? (आप गैर-जेनरेट कोड के लिए एक ही तर्क का उपयोग कर सकते हैं।) किसी भी मामले में, आपको शायद JavaExec कार्य के बजाय फ़ाइलों को ग्रैडल से संकलित करना चाहिए। –