2010-10-29 14 views
5

के सबप्रोजेक्ट्स में अपना lib फ़ोल्डर कैसे साझा करूं, मेरे पास एक उपकरण है जो बिल्डिंग टूल के रूप में सरल निर्मित टूल चला रहा है। मेरी सभी उप परियोजनाएं समान निर्भरताओं को साझा कर रही हैं, इसलिए मैं उन्हें एक ही lib फ़ोल्डर का उपयोग करना चाहता हूं। मैं अपने साझा lib फ़ोल्डर के प्रतीकात्मक लिंक बनाकर ऐसा कर सकता हूं, लेकिन मुझे एसबीटी में एक कॉन्फ़िगरेशन मिलना है जो मुझे अपने पुस्तकालयों के पथ में बदलने देता है।मैं सरल बिल्ड टूल

override def dependencyPath = ".."/"lib" 

काम नहीं करता है, ".." रास्तों

class Top(info:ProjectInfo) extends ParentProject(info){ 
    lazy val subproject = project("sub","Sub Project",info => SubProject(info,dependencyPath) 

    class SubProject extends DefaultProject(info:ProjectInfo,libdir:Path){ 
     override def dependencyPath = libdir 
    } 
} 

काम नहीं करता है की अनुमति नहीं है, dependencyPath एक परियोजना रिश्तेदार पथ

dependencyPath.absolutePath 

, या तो काम नहीं करता है क्योंकि है absolutePath स्लेश के साथ एक स्ट्रिंग बनाता है, और पथ स्लेश के साथ तारों से नहीं बनाया जा सकता है।

उत्तर

3

आप कुछ इस तरह कर सकते हैं तो आप बस बच्चे परियोजनाओं के लिए माता-पिता परियोजना की अप्रबंधित classpath (यानी lib -directory) जोड़ना चाहते हैं: ParentProject कक्षा में

class ParentProject(info: ProjectInfo) extends DefaultProject(info) { parent => 

    class SubProject(info: ProjectInfo) extends DefaultProject(info) { 
    override def unmanagedClasspath = 
     parent.unmanagedClasspath +++ super.unmanagedClasspath 
    } 

    val someProject = project("test", "Test", new SubProject(_)) 
} 

परिभाषित रास्तों (जैसे val dirJars = descendents("dir", "*.jar") का प्रयोग करके) और उन्हें SubProject पर जोड़कर उसी तरह काम करता है जैसा उपर्युक्त काम करता है।

+0

धन्यवाद, लेकिन यह इतना आसान नहीं है। मेरे lib फ़ोल्डर में कुछ देशी पुस्तकालय शामिल हैं जिन्हें मुझे मैन्युअल रूप से क्लासपाथ में सेट करना है। इसका मतलब है कि मेरे प्रोग्राम को एक अधिलेखित runJVMOptions के साथ प्रोजेक्ट का फोर्क रन होना है। उपप्रोजेक्ट्स में पथ अब और सही नहीं है, क्योंकि वे एक अलग फ़ोल्डर से रम करते हैं। – Arne

+0

यह मेरे लिए काम करता है। यहां एक कार्यरत प्रोजेक्ट परिभाषा है कि आपको अपनी समस्या का अनुकूलन करने में सक्षम होना चाहिए: http://gist.github.com/657060 – Moritz

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