मल्टीप्रोजेक्ट में एसबीटी टेस्ट-डिपेंडेंसीज: डिपेंडेंट प्रोजेक्ट्स के लिए टेस्ट-कोड उपलब्ध कराएं


83

मैंने एक एसबीटी मल्टी-प्रोजेक्ट किया है, जहां कुछ परियोजनाओं में एक-दूसरे पर निर्भरता है। ऐशे ही:

 lazy val coreProject: Project = Project(
    id = "core-project",
    base = file("./core-project"),
    // other stuff
    ))

  lazy val extensions: Project = Project(
    id = "extensions",
    base = file("./extensions"),
    dependencies = Seq(coreProject)
  )

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

मैं sbt को कैसे बता सकता हूं कि निर्भरता को टेस्ट-स्कोप के लिए टेस्ट-कोड भी शामिल करना चाहिए? ताकि मैं in एक्सटेंस ’-प्रोजेक्ट के टेस्ट-कोड में अपने मोक्स का फिर से उपयोग कर सकूं?

जवाबों:


92

इस तरह:

dependencies = Seq(coreProject % "compile->compile;test->test")

तब "गेट-स्टार्टिंग-क्लास-क्लास डिपेंडेंसीज़" खंड में गेटिंग-स्टार्ट-मल्टी-प्रोजेक्ट गाइड पर चर्चा की गई है ।


1
बस यहाँ अन्य लोग भ्रमित नहीं हैं, यह सुझाव दे रहा है कि आप प्रोजेक्ट परिभाषा में निर्भरताएँ निर्धारित करते हैं (पुस्तकालय निर्भरताएँ नहीं)।
रेयान ग्रॉस

गैर एसबीटी निंज़ास के लिए, क्या आप बिल्ड फ़ाइल का अधिक प्रदर्शन कर सकते हैं? परिभाषा की तरह lazy val foo = project.settings(...).dependencies(Seq(bar % "compile->compile;test->test"))काम नहीं करता है। @RyanGross, क्या आप?
अभिजीत सरकार

45

आप .dependsOn(coreProject % "compile->compile;test->test")प्रारंभिक परियोजना घोषणा के बाद भी ऐसा कर सकते हैं ।

lazy val coreProject = Project("core-project")
lazy val extensions = Project("extensions").dependsOn(coreProject % "compile->compile;test->test")

प्रासंगिक दस्तावेज: scala-sbt.org/release/docs/…
कॉलिन स्ट्रॉन्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.