自定义其他插件的 sbt 插件
sbt plugin that customize other plugin
我有许多共享共同行为的 sbt 项目,向 sbt 本机包添加自定义。
我尝试将所有常用实用程序功能和任务推送到自定义插件中。
特别是我有一个自定义任务需要在通用打包程序全部压缩之前执行。
结构如下:
object MyPlugin extends AutoPlugin {
// my custom task
val customTask = Def.task { ...}
override def requires: Plugins = JavaAppPackaging
object autoImport {
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.1.1")
}
import autoImport._
override def projectSettings: Seq[Setting[_]] =
Seq(
packageZipTarball in Universal <<= (packageZipTarball in Universal) dependsOn customTask
)
}
插件编译正常,但是当我像这样将它导入我的项目时:
lazy val myProj: Project = (project in file("."))
.settings(MyPlugin.projectSettings: _*)
我运行:
sbt universal:packageZipTarball
我得到:
References to undefined settings:
universal:packageZipTarball from universal:packageZipTarball
我需要做什么来修复它?
我猜你把插件加错地方了。要将 sbt-native-packager 添加到您的 sbt-plugin,请执行以下操作
build.sbt
您需要在此处添加插件
sbtPlugin := true
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.1.1")
自动插件
您现在可以在您的 AutoPlugin 中访问 native-packager。
import com.typesafe.sbt.SbtNativePackager.Universal
import com.typesafe.sbt.NativePackagerKeys.packageZipTarball
object MyPlugin extends AutoPlugin {
// ... your code
}
调试
一般提示:调试未定义的设置和自动插件应该始终从查看启用的自动插件开始。您可以列出项目中所有通过调用 sbt plugins
.
启用的插件
希望对您有所帮助,
向
我有许多共享共同行为的 sbt 项目,向 sbt 本机包添加自定义。
我尝试将所有常用实用程序功能和任务推送到自定义插件中。 特别是我有一个自定义任务需要在通用打包程序全部压缩之前执行。
结构如下:
object MyPlugin extends AutoPlugin {
// my custom task
val customTask = Def.task { ...}
override def requires: Plugins = JavaAppPackaging
object autoImport {
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.1.1")
}
import autoImport._
override def projectSettings: Seq[Setting[_]] =
Seq(
packageZipTarball in Universal <<= (packageZipTarball in Universal) dependsOn customTask
)
}
插件编译正常,但是当我像这样将它导入我的项目时:
lazy val myProj: Project = (project in file("."))
.settings(MyPlugin.projectSettings: _*)
我运行:
sbt universal:packageZipTarball
我得到:
References to undefined settings:
universal:packageZipTarball from universal:packageZipTarball
我需要做什么来修复它?
我猜你把插件加错地方了。要将 sbt-native-packager 添加到您的 sbt-plugin,请执行以下操作
build.sbt
您需要在此处添加插件
sbtPlugin := true
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.1.1")
自动插件
您现在可以在您的 AutoPlugin 中访问 native-packager。
import com.typesafe.sbt.SbtNativePackager.Universal
import com.typesafe.sbt.NativePackagerKeys.packageZipTarball
object MyPlugin extends AutoPlugin {
// ... your code
}
调试
一般提示:调试未定义的设置和自动插件应该始终从查看启用的自动插件开始。您可以列出项目中所有通过调用 sbt plugins
.
希望对您有所帮助, 向