डिफ़ॉल्ट रूप से, एसबीटी src/main
और src/tests
से target/scala-[version]/classes
और target/scala-[version]/test-classes
के तहत क्रमशः स्रोत संकलित करता है। मैं कोर नामक एक और समूह को परिभाषित करना चाहता हूं जिसे मैं src/core/java
या src/core/scala
में डाल सकता हूं और इसे एक अलग वर्ग पथ में संकलित कर सकता हूं। मैं यह कैसे करु?एसबीटी में एक और संकलन क्षेत्र को परिभाषित करने के लिए कैसे?
मेरा उद्देश्य: मैं कक्षा फ़ाइलों के अलग-अलग समूह रखना चाहता हूं, क्योंकि मैं चल रहे एप्लिकेशन के लिए JVM प्रक्रिया को पुनरारंभ किए बिना, विकास के दौरान नए एप्लिकेशन कोड को पुन: संकलित और पुनः लोड करना चाहता हूं। इसलिए जब एप्लिकेशन प्रारंभ होता है तो कोर क्लासेस लोड हो जाएंगे, और वे src/main से बाकी सब कुछ लोड करने के लिए कस्टम क्लासलोडर का उपयोग करेंगे। उन बाद के वर्गों को पुनः लोड करने योग्य होगा। मुझे ऐसा करने की ज़रूरत है क्योंकि मैं एक संगीत कार्यक्रम लिख रहा हूं जो जेएनआई के माध्यम से एक सॉफ्टवेयर उपकरण लोड करता है, जो लोड करने में काफी समय लगता है। विकास कचरे के दौरान ऐप को रीबूट करना बहुत अधिक समय है।
मुझे मुख्य रूप से कक्षा फ़ाइलों को अलग करने की आवश्यकता है। अगर मैं जार का उत्पादन कर रहा था, तो मैं myapp-core.jar और myapp-main.jar चाहता हूं, लेकिन यह उतना महत्वपूर्ण नहीं है, क्योंकि यह अंतिम उत्पाद से अधिक विकास के लिए है।
एक पहला प्रयास:
val Core = config("core")
...
classDirectory in Core <<= crossTarget(t => file(t.getAbsolutePath + "core-classes"))
इस त्रुटि देता है:
Reference to undefined setting:
{.}/*:cross-target from {.}/core:class-directory
Did you mean *:cross-target ?
मैं अब स्कोप के बारे में पढ़ा जाता हूँ ...
यदि उदाहरण आपको आवश्यकता या समझने से अधिक शामिल है, तो आप अतिरिक्त कॉन्फ़िगरेशन के साथ विशेष रूप से क्या करना चाहते हैं? इसे प्रकाशित करें, इसे मुख्य जार में शामिल करें ...? –
मुझे अभी तक उस उदाहरण को समझ में नहीं आया है। मैंने यह बताने के लिए प्रश्न में जोड़ा है कि मैं अतिरिक्त कॉन्फ़िगरेशन के साथ क्या करना चाहता हूं। –
यह बहुत अच्छा काम करता है, लेकिन आप टेस्ट कॉन्फ़िगरेशन में कोर कॉन्फ़िगरेशन कैसे उपलब्ध कराते हैं? – Brendanator