如何为构建应用程序的当前事件创建sbt插件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为构建应用程序的当前事件创建sbt插件?相关的知识,希望对你有一定的参考价值。
我有这个hello world插件:
object HelloPlugin extends AutoPlugin {
object autoImport {
val sayHello: TaskKey[Unit] = TaskKey("saying hello")
}
import autoImport._
override def projectSettings = Seq(
sayHello := {
println("------------------------------------ heeeeeeeeeeeeeeeelooooooooo -------------------")
}
)
}
我想在编译时之前和之后使用我的sayHello
任务。我该怎么做?
我找到了relative question,但它不是关于AutoPlugin扩展。
答案
你只需要根据自己的情况调整答案。答案保持不变:使用dependsOn
,而不是build.sbt
,你将它添加到你的插件的projectSettings
:
override def projectSettings = Seq(
sayHello := { ... },
Compile/compile := (Compile/compile).dependsOn(sayHello).value
)
另一答案
你需要覆盖compile
TaskKey
,如:
override def projectSettings: Seq[Def.Setting[_]] = Seq(
compile in Compile := Def.taskDyn {
hello.value // call before
val c = (compile in Compile).value // actual compilation
Def.task {
hello.value // call after
c
}
}.value
)
def hello: Def.Initialize[Task[Unit]] = Def.task {
println("hello")
}
文件:https://www.scala-sbt.org/1.0/docs/Howto-Dynamic-Task.html#build.sbt+v2
以上是关于如何为构建应用程序的当前事件创建sbt插件?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 appJS/appJVM 交叉构建项目运行 scala sbt-native-packager
如何为 sbt-native-package 指定 RPM_BUILD_ROOT