【发布时间】:2016-04-05 23:23:30
【问题描述】:
我正在尝试创建一个自定义任务,该任务将为我生成一些额外的资源。为此,我需要两个不同的库A 和A-runtime。
A 只是一个能够生成源文件的编译时依赖项。 A-runtime 也需要作为运行时依赖项。
包含A-runtime 很容易,只需将其包含在库依赖项中即可:
libraryDependencies += "com.organization" % "A-runtime" % "version"
由于我不希望 A 库包含在运行时依赖项中,因此我尝试为此创建一个新的 ivyConfiguration:
ivyConfigurations += config("compileonly").hide
并将库包含为:
libraryDependencies += "com.organization" % "A" % "version" % "compileonly"
然后我将Build.scala 中的新任务定义为:
lazy val myTask = taskKey[Unit]("description")
val customTaskSettings = Seq(
customTask := {
com.organization.Generator.run()
}
)
lazy val myProject = project
.in(file("."))
.settings(customTaskSettings)
但是,现在 SBT 无法再打开该项目,因为它找不到 com.organization.Generator。这是有道理的,因为当时 SBT 正在编译 Build.scala,它不依赖于 A。
现在我知道任何 SBT 项目只是另一个 scala 项目,但有没有办法将 A 库作为依赖项添加到 SBT 项目?
【问题讨论】:
标签: scala compilation sbt task