2016-01-06 7 views
8

this question से प्रस्थान, मैं दो अलग-अलग शिष्टाचार में एक एसबीटी परियोजनाओं को संकलित करने में सक्षम होना चाहता हूं, यानी विभिन्न scalacOptions के साथ। डुप्लिकेट प्रश्नों का उत्तर बताता है कि क्यों एक और कॉन्फ़िगरेशन शुरू करना मदद नहीं करता है क्योंकि आपको समर्पित स्रोतों की भी आवश्यकता होगी।अलग कॉन्फ़िगरेशन कार्य को अलग कॉन्फ़िगरेशन के बिना कैसे बनाएं, लेकिन अलग-अलग स्केलैकऑप्शन?

तो। लेकिन मैं समर्पित स्रोत नहीं चाहता हूं। मैं बिल्कुल उसी स्रोत को संकलित करना चाहता हूं लेकिन विभिन्न कंपाइलर सेटिंग्स के साथ। तो मुझे लगता है कि संकल्प नया कार्य को संकलित करने के बजाय परिभाषित करना होगा।

val myCompile = taskKey[???]("Compiles my way") 

scalacOptions in MyCompile ++= Seq("-elide-below", "1") 

जैसे कि मैंने फिर एक अलग target निर्देशिका के साथ डिफ़ॉल्ट compile कार्य नकल करने न्यूनतम प्रयास चाहेगा, और कर सकता है कि एक myCompile:assembly में से फ़ीड ...? मुझे यह कैसे करना है?

उत्तर

2

टीएल; डी का उपयोग compile के रिटर्न प्रकार को जानने के लिए inspect का उपयोग करें।

> inspect compile 
[info] Task: sbt.inc.Analysis 
... 
इस के साथ

, आप build.sbt में निम्नलिखित होना चाहिए:

val myCompile = taskKey[sbt.inc.Analysis]("Compiles my way") 
myCompile <<= compile in Compile 

scalacOptions in myCompile ++= Seq("-elide-below", "1") 
+0

वह 'scalacOptions' –

+0

नहीं उठाता है' scalacOptions' का क्या दायरा है? जवाब में मैं स्पष्ट रूप से 'myCompile में scalacOptions' का उपयोग कर रहा हूं? क्या आप अन्य स्कोप 'स्केलेक ऑप्शन' जोड़ना चाहते हैं? –

+0

मुझे नहीं पता। लेकिन 'myCompile' में 'scalacOptions' निश्चित रूप से 'myCompile' द्वारा नहीं उठाया गया है, मैंने इसे सत्यापित किया है (एक विकल्प के रूप में '' -no-way '' जोड़ने का प्रयास करें और 'sbt clean myCompile' चलाएं) –

0

तुम अब भी एक अलग विन्यास का उपयोग करें और

sourceDirectory in MyCompile := (sourceDirectory in Compile).value 

, src/main/* स्रोतों का उपयोग करने के लिए sbt compile tasks with different options में के रूप में जोड़ सकते हैं।

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