2013-10-21 3 views
9

Ich habe folgende build.sbt:Was wäre die minimale Konfiguration von IntegrationTest in sbt 0.13.x?

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

scalaVersion := "2.10.4" 

Defaults.itSettings 

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

Wie kann ich die Linie zu machen, wo ich the IntegrationTest configuration noch einfacher hinzufügen?

Ich würde lieber gerne eine Einstellung mit aktuellen Konfigurationen und Einstellungen des Projekts, z.

settings ++= Defaults.itSettings 

configs += IntegrationTest 

oder sogar die itSettings Einstellungen werden automatisch mit der folgenden Zeile in der SBT-Datei angewandt:

configs += IntegrationTest 
+0

Ich glaube nicht ein besserer Weg derzeit verfügbar, aber ich hoffe zu erfahren, dass ich falsch liege. –

+1

Es gibt einen besseren Weg, aber nicht viel - benutze 'project in file (". ") Configs (IntegrationTest)'. –

+0

@JacekLaskowski Ihre kürzere Version funktionierte nicht für mich: 'gefunden: sbt.Project erforderlich: sbt.Def.SettingsDefinition' – Caoilte

Antwort

2

sbt muss die Konfigurationen für die Delegierung kennen, bevor Einstellungen zu bewerten. Daher können Konfigurationen nicht innerhalb des Einstellungs-Systems definiert werden.

Beachten Sie, dass wenn Sie eine Konfiguration verwenden, die keine andere Konfiguration enthält, es nicht unbedingt notwendig ist, sie auf dem Projekt mit der configs-Methode zu registrieren.

1

Ich gehe davon aus, dass Sie SBT 0.13 verwenden, da Sie Ihre Projektdefinition in .SBT-Datei haben.

Es gibt ein neues Feature namens autoSetting, mit dem Sie die kombinierten .sbt-Einstellungen aus mehreren sbt-Dateien beeinflussen können.

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

wird ein Beispiel sein:

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

ich mich ähnlich frustriert gefunden. Die beste Lösung, die ich gefunden habe, ist von Josh Suereths Effective SBT slides zu leihen und eine Projekthilfsfunktion zu erstellen, die die IntegrationTest-Konfiguration für Sie hinzufügt.

zB

object BasePlugin extends Plugin { 
    val baseSettings = Defaults.itSettings 

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

Ich ziehe diesen und ein paar anderen Einstellungen in als Plugin und dann ist mein build.sbt so einfach wie

import caoilte.BasePlugin 

BasePlugin.baseSettings 

val helloWorld = BasePlugin.baseProject("helloWorld") 
Verwandte Themen