【发布时间】:2020-11-24 19:11:02
【问题描述】:
有没有办法在sbt中设置Annotation处理器的输出路径?
目前它将文件生成到:
target/scala-2.11/classes
不过我更喜欢
target/scala-2.11/src_managed
【问题讨论】:
-
这根本没有帮助。
标签: sbt
有没有办法在sbt中设置Annotation处理器的输出路径?
目前它将文件生成到:
target/scala-2.11/classes
不过我更喜欢
target/scala-2.11/src_managed
【问题讨论】:
标签: sbt
类似
// in build.sbt:
// create managed source directory before compile
compile in Compile <<= (compile in Compile) dependsOn Def.task { (managedSourceDirectories in Compile).value.head.mkdirs() },
// tell the java compiler to output generated source files to the managed source directory
javacOptions in Compile ++= Seq("-s", (managedSourceDirectories in Compile).value.head.getAbsolutePath),
【讨论】:
javacOptions in Compile ++= Seq("-s", (managedSourceDirectories in Compile).value.head.getAbsolutePath),但它确实有效。感谢您的评论!
compile <<= compile dependsOn Def.task { (managedSourceDirectories in Compile).value.head.mkdirs() }
Reference to undefined setting: *:compile from *:compile
配置sourceManaged而不是managedSourceDirectories更符合人体工程学。
在build.sbt 中添加到sbt 模块的设置:
Compile / javacOptions ++= Seq("-s", (Compile / sourceManaged).value.getAbsolutePath)
您也可以将此插件放到project 文件夹中
package custom.sbt
import sbt.{Def, _}
import sbt.Keys._
object Compiler extends AutoPlugin {
override def trigger = allRequirements
override def buildSettings: Seq[Def.Setting[_]] = Seq(
Compile / javacOptions ++= Seq("-source", "11", "-target", "11"),
scalacOptions ++= Seq(
"-target:11" // Target JRE 11
)
)
override def projectSettings: Seq[Def.Setting[_]] = Seq(
Compile / javacOptions ++= Seq("-s", (Compile / sourceManaged).value.getAbsolutePath)
)
}
【讨论】:
在 sbt 0.13.15
compile := ((compile in Compile) dependsOn Def.task {
(sourceManaged in Compile).value.mkdirs()
}).value,
javacOptions in Compile ++= Seq("-s", s"${sourceManaged.value}/main")
【讨论】: