как разделить значения между build.sbt и Assembly.sbt

Я использую два файла для своей сборки: build.sbt и Assembly.sbt (для сборки толстых банок с помощью плагина sbt-assembly). У меня есть некоторые значения, определенные в build.sbt. Скажем так, я выполняю некоторые пользовательские задачи, которые зависят от них. Однако я заметил, что значения, определенные в build.sbt, не видны в Assembly.sbt. В итоге я дублирую код в этих двух файлах. Как настроить его так, чтобы Assembly.sbt мог видеть vals в build.sbt?

Спасибо!


person Paul Rivera    schedule 12.01.2015    source источник
comment
В настоящее время это не поддерживается синтаксисом .sbt. Однако вы можете поместить общие значения в файл project/lib.scala   -  person jsuereth    schedule 13.01.2015
comment
Привет, джсуэрет! Как это работает? Когда я создам lib.scala, нужно ли мне импортировать его в build.sbt и Assembly.sby?   -  person Paul Rivera    schedule 15.01.2015
comment
Я создам реальный ответ.   -  person jsuereth    schedule 15.01.2015


Ответы (1)


В настоящее время значения val в *.sbt файлах должны быть разделены пространством имен. Мы обсуждали преимущества наличия глобального пространства имен или его отсутствия, но, в конце концов, разделение их делает вещи более согласованными.

Способ "sbt" для обмена значениями и настройками между build.sbt заключается в следующем:

  • Создайте плагин, который делает это.
  • Создайте «библиотеку» в каталоге project/, которая делает это.

Для варианта № 2 вы можете сделать следующее:

проект/lib.scala

package mylib

object MyStuff {
   val foo = "hi"
}

build.sbt

import mylib.MyStuff

// Just reference .scala code from the project/ directory.
name := MyStuff.foo

Надеюсь, это поможет!

person jsuereth    schedule 15.01.2015