我正在尝试创建一个自定义任务,为我生成一些额外的资源。为此,我需要两个不同的库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项目中?
答案 0 :(得分:0)
现在我知道任何SBT项目都只是另一个scala项目,但有没有办法将A库作为依赖项添加到SBT项目中?
SBT项目本身的依赖关系必须在project/build.sbt
或project/project/Build.scala
中定义,而不是在project/Build.scala
中定义。并且您不希望该依赖项仅为编译时,因为您需要运行它以执行customTask
。