2016-08-21 1 views
1

Ich habe eine sbt Build mit mehreren Unterprojekten, beim Versuch, scala.io.source.fromFile verwenden versucht es Dateien aus dem Stammprojekt und nicht von jedem einzelnen Unterprojekt zu lesen. Dies ist, was ich in einigen Fällen brauche, aber in anderen möchte ich die Wurzelressource verwenden.scala.io.source.fromFile mit sbt subProjects Lesen von Root-Ressourcen-Ordner

Was ist die idiomatische Art des Lesens von Teilprojekt- und Wurzelressourcenordnern in SBT mit Teilprojekten?

+0

Hat die folgende Antwort in irgendeiner Weise geholfen? Ich kann versuchen, es hilfreicher zu machen, wenn Sie irgendwelche Rückmeldungen haben. – marios

Antwort

2

Es hängt davon ab, welchen Bereich Sie anrufen resourceDirectory von. Hier ist ein Beispiel für Build mit einem Stammprojekt und zwei Teilprojekte (von sbt REPL):

> resourceDirectory 
[info] alpha/compile:resourceDirectory 
[info] /Users/xyz/sbt-tutorial/sub-projects/sub-a/src/main/resources 
[info] beta/compile:resourceDirectory 
[info] /Users/xyz/sbt-tutorial/sub-projects/sub-b/src/main/resources 
[info] root/compile:resourceDirectory 
[info] /Users/xyz/sbt-tutorial/sub-projects/src/main/resources 

Wie Sie sehen können, alpha/compile:resourceDirectory Aufruf erhalten Sie die Ressourcenverzeichnis für das Teilprojekt namens alpha.

Wenn Sie die sbt DSL Notation für diese wollen wird es sein:

myTask := { 
    val resDir = (resourceDirectory in (alpha, Compile)).value 
    ... 
} 

Sie alpha usw. mit ThisBuild ersetzen können, wenn Sie das Ressourcenverzeichnis für das Root-Projekt erhalten möchten.

+0

Aber wie kommt es, dass einige Ressourcen gefunden werden? Es sieht so aus, als ob fromFile das einzige Problem hat. Anwendungskonfiguration und Logback werden korrekt aus den Ressourcen der Unterprojekte übernommen. – user3139545

+0

können Sie mir zeigen, wo diese Frage codiert ist? ist es in den Einstellungen eines Projekts oder außerhalb? Ich kann dir mehr helfen, wenn du mir zeigst, was du hast. – marios