2012-10-02 15 views
8

मेरे पास कई एसबीटी परियोजनाएं हैं जिनमें सभी का एक सामान्य सेटअप है - उदा। बहु मॉड्यूल, प्रकाशित करने के लिए सेटिंग्स आदि आदिएसबीटी आम निर्माण सेटिंग्स

मैं एक आम उदाहरण कैसे प्रदान करूं कॉमनबिल्ड क्लास कि प्रत्येक परियोजना से इसका विस्तार हो सकता है? उदाहरण के लिए:

trait CommonBuild { 
    val publishSettings = Seq(
    publishTo := Some("", ""), 
    credentials += ... 
) 

    def module(name: String) (
    settings: Seq[Setting[_]], 
    projectId: String = PROJECT + "-" + name, 
    dirName: String = name, 
    srcPath: String = PROJECT + name 
    ) = Project(projectId, file(dirName), settings = (buildSettings ++ srcPathSetting(projectId, srcPath)) ++ publishSettings ++ settings) 

} 

अब यह एक परियोजना का निर्माण द्वारा इस्तेमाल किया जा सकता है:

object ProjABuild extends CommonBuild { 
    // use CommonBuild methods/vals 
} 

object ProjBBuild extends CommonBuild { 
    // use CommonBuild methods/vals 
} 
+0

क्या ये परियोजनाएं एसबीटी परियोजनाओं को समर्पित हैं, या वे एसबीटी उपप्रोजेक्ट हैं? –

+0

प्रोजेक्ट ए और बी एसबीटी परियोजनाओं को समर्पित हैं, उपप्रोजेक्ट/मॉड्यूल नहीं। – Dzhu

+1

ऐसा लगता है कि सवाल build.scala में बाहरी लाइब्रेरी कोड का उपयोग करने का एक विशेष मामला है? जो आपका लक्ष्य पूरा करेगा, है ना? – Owen

उत्तर

3

मैं यह भी करना चाहता था। महत्वपूर्ण बात यह है कि आम सेटअप को अपने स्वयं के प्रोजेक्ट में रहने की ज़रूरत होती है जिस पर उपप्रोजेक्ट निर्भर करता है, ताकि सामान्य सेटअप में किए गए बदलाव स्वचालित रूप से सभी सबप्रोजेक्ट्स में प्रभावी हो जाएं। इसे पूरा करने का एकमात्र तरीका एसबीटी प्लगइन में सामान्य सामान डालना है।

मैंने ऐसी प्लगइन लिखी, जिसे iesl-sbt-base कहा जाता है। यह बॉयलरप्लेट का ढेर प्रदान करता है, ताकि आपकी परियोजना के लिए Build.scala फ़ाइल बहुत कम हो सके। यह प्रदान करता है:

  • रिज़ॉल्वर विन्यास
  • क्या पर सकर्मक निर्भरता स्नैपशॉट संस्करणों से
  • वैकल्पिक सुरक्षा उपयोग किया जाता है स्वत: अद्यतन करने
  • स्पष्टता के साथ
  • सरलीकृत निर्भरता संकल्प
  • साफ-प्रवेश करने विन्यास

विवरण के लिए कृपया https://github.com/iesl/iesl-sbt-base देखें। आप शायद फोर्क करना चाहते हैं कि मेरे सेटअप के लिए विशिष्ट चीजों को बदलने के लिए (उदा।, विशेष रूप से रिज़ॉल्वर यूआरएल)। अगर मांग है, तो मैं इसे और अधिक विन्यास योग्य बनाने के बारे में सोच सकता हूं।

+0

बहुत धन्यवाद धन्यवाद डेविड! – Dzhu