я переопределять свои тесты, чтобы поставить некоторые аргументы конфигурации для тестирования набора:SBT: выполнить задачу, используя другое значение задачи
Это отрывок из моего Build.scala:
object Build extends Build {
lazy val myProject = (project in file("my_project")).settings(
test in Test := myProjectTest.value
)
val myProjectTest = Def.task {
(testOnly in Test).toTask(" tests.Suites -- " +
s"-Ddbserver=localhost " +
s"-Ddbport=3306 ").value
}
}
Это работает нормально.
Теперь я хотел бы дать мой тестовый набор имя артефакта, как это:
val myProjectTest = Def.task {
val art = (Keys.artifactPath in (Compile, packageBin)).value
(testOnly in Test).toTask(" tests.Suites -- " +
s"-Dartifact=${art.getCanonicalPath} " +
s"-Ddbserver=localhost " +
s"-Ddbport=3306").value
}
Но он показывает следующее сообщение об ошибке:
[error] /tmp/aa/project/Build.scala:17: Illegal dynamic reference: art
[error] s"-Dartifact=${art.getCanonicalPath} " +
[error] ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
Я знаю что-то о SBT внутренности, макросы, график зависимостей задач, и мне даже удалось решить некоторые из моих задач с помощью областей. Здесь я попытался использовать карту или flatMap на (Keys.artifactPath in (Compile, packageBin))
, но не смог достичь желаемого результата. Всякий раз, когда я пытаюсь получить доступ, я получаю Illegal dynamic reference
.
Прошу, посоветуйте мне. Мне просто нужно передать значение задачи другим параметрам (inputKey).
версия SBT: 0.13.5
написания кода, который работает и помогает воспроизвести проблему драматический помогут получить ответ на вашу проблему , – sschaef
Это код. Я не ожидаю никаких исследований, и любой пользователь sbt, который написал пользовательские сборки, скорее найдет информацию достаточной. Ваш отрицательный голос уменьшает мои шансы получить быстрый ответ, между прочим. – dmitry