如何在我的 Scala 项目中 'embed' SBT 插件

How to 'embed' SBT plugin in my Scala project

我目前正在使用作为 compile 任务的一部分运行的 SBT 插件,但希望对其进行修改。已与作者联系但没有回复。

任何人都可以向我简要介绍将功能导入我的项目以便我对其进行自定义的步骤吗?它是一个对象。

import sbt._ 有效

import sbt.Keys._ 对象键不是包集的成员。

我需要 SBT jar 作为我项目的非托管依赖项吗?

build.properties 包含 sbt.version=0.13.5

顺便说一句 - 我将在代码中保留原始作者的详细信息以将代码归于他们。


编辑。

我正在使用 sbt-cxf-wsdl2java 插件。

我主要希望升级插件使用的 CXF 版本,因为这是硬编码的,而不是插件目标代码。

我可以分叉它,更改代码,创建新插件并推送到一个 repo,然后在我的项目中声明,但是对于一个相对较小的更改来说,这似乎需要付出很多努力 - 因此我希望 'embed'我的应用程序中的插件代码。

我想我需要阅读文档并弄清楚插件的工作原理才能理解这一点 - 但如果有人能给我一些建议以节省我的时间,那么我将不胜感激。

build.sbt(带有相关的插件位):

lazy val wsPackage = "com.myCompany"

seq(cxf.settings :_*)

cxf.wsdls := Seq(
    cxf.Wsdl((resourceDirectory in Compile).value / "My.wsdl", Seq("-p",  wsPackage), "modelOutputDir")
)

plugins.sbt

addSbtPlugin("com.ebiznext.sbt.plugins" % "sbt-cxf-wsdl2java" % "0.1.4")

build.sbt 中,您可以覆盖配置键(位于 com.ebiznext.sbt.plugins.CxfWsdl2JavaPlugin.Keys 中)。例如:

lazy val wsPackage = "com.myCompany"

Seq(cxf.settings :_*)

cxf.cxfVersion := "3.1.2" // override CXF version

cxf.wsdls := Seq(
  cxf.Wsdl((resourceDirectory in Compile).value / "My.wsdl", Seq("-p",  wsPackage, "-impl", "-mark-generated"), "unique wsdl id")
)