2013-10-21 4 views
9

मैंने निम्नलिखित build.sbt:sbt 0.13.x में IntegrationTest कॉन्फ़िगरेशन का न्यूनतम सेटअप क्या होगा?

name := "it-config-sbt-project" 

scalaVersion := "2.10.4" 

Defaults.itSettings 

lazy val `it-config-sbt-project` = project.in(file(".")).configs(IntegrationTest) 

मैं लाइन मैं कहाँ the IntegrationTest configuration भी सरल जोड़ने कैसे बना सकता है?

मैं बल्कि प्रोजेक्ट की वर्तमान कॉन्फ़िगरेशन और सेटिंग्स के साथ सेटिंग स्थापित करना चाहता हूं, उदा।

settings ++= Defaults.itSettings 

configs += IntegrationTest 

या यहाँ तक कि itSettings सेटिंग्स एसबीटी फ़ाइल में निम्न पंक्ति के साथ स्वचालित रूप से लागू कर दिया है:

configs += IntegrationTest 
+0

के रूप में सरल है मुझे नहीं लगता कि एक बेहतर तरीका है वर्तमान में उपलब्ध है, लेकिन मुझे यह जानने की उम्मीद है कि मैं गलत हूं। –

+1

एक बेहतर तरीका है, लेकिन अधिक नहीं - फ़ाइल में प्रोजेक्ट ("।") कॉन्फ़िगर (इंटीग्रेशनटेस्ट) का उपयोग करें। –

+0

@JacekLaskowski आपका छोटा संस्करण मेरे लिए काम नहीं करता है: 'मिला: sbt.Project आवश्यक: sbt.Def.SettingsDefinition' – Caoilte

उत्तर

2

एसबीटी सेटिंग्स मूल्यांकन करने से पहले प्रतिनिधिमंडल के लिए विन्यास पता करने के लिए की जरूरत है। इसलिए, सेटिंग्स सिस्टम के अंदर विन्यास परिभाषित नहीं किया जा सकता है।

ध्यान दें कि अगर कॉन्फ़िगरेशन का उपयोग करना extend कोई अन्य कॉन्फ़िगरेशन नहीं है, तो इसे configs विधि के साथ परियोजना पर पंजीकृत करने के लिए कड़ाई से जरूरी नहीं है।

1

मुझे लगता है कि आप एसबीटी 0.13 का उपयोग कर रहे हैं क्योंकि आपके पास .sbt फ़ाइल के अंदर आपकी प्रोजेक्ट परिभाषा है।

ऑटोसेटिंग नामक एक नई सुविधा है जिसे आप एकाधिक एसबीटी फाइलों से संयुक्त .sbt सेटिंग्स को प्रभावित करने के लिए उपयोग कर सकते हैं।

http://www.scala-sbt.org/0.13.0/docs/Community/ChangeSummary_0.13.0.html#control-over-automatically-added-settings

एक उदाहरण होगा:

lazy val `it-config-sbt-project` = project.in(file(".")) 
    .autoSettings(userSettings, allPlugins, sbtFiles(file("../mysetting.sbt")), defaultSbtFiles) 
5

मैं अपने आप को इसी तरह से निराश पाया। मैंने पाया है कि सबसे अच्छा समाधान जोश सुएरेथ के Effective SBT slides से उधार लेना है और एक प्रोजेक्ट हेल्पर फ़ंक्शन बनाना है जो आपके लिए एकीकरण टेस्ट कॉन्फ़िगरेशन जोड़ता है।

जैसे

object BasePlugin extends Plugin { 
    val baseSettings = Defaults.itSettings 

    def baseProject(name: String, location: String = "."): Project = (
    Project(name, file(location)) configs(IntegrationTest) 
) 
} 

मैं एक प्लगइन के रूप में में अन्य सेटिंग्स के इस और एक गुच्छा खींच और फिर मेरी build.sbt

import caoilte.BasePlugin 

BasePlugin.baseSettings 

val helloWorld = BasePlugin.baseProject("helloWorld") 
संबंधित मुद्दे