如何嵌入'我的Scala项目中的SBT插件

时间:2015-04-13 13:52:20

标签: scala sbt sbt-plugin

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

有人能给我一个高级概述,将功能导入我的项目的步骤,以便我可以自定义它吗?它是一个单一的对象。

  • 如果对象是挂钩'进入compile任务然后我认为它应该仍然延伸plugin

  • 目前,我在import sbt.Keys._

  • 上遇到编译错误

import sbt._有效

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

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

build.properties包含sbt.version=0.13.5

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


编辑。

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

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

我可以分叉,更改代码,创建新插件并推送回购然后在我的项目中声明但这对于相对较小的改变似乎需要付出很多努力 - 因此我希望能够嵌入'我的应用程序中的插件代码。

我想我需要阅读文档并弄清楚插件如何工作才能理解这一点 - 但如果有人能给我一些指导以节省时间,那么我真的很感激。

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")

1 个答案:

答案 0 :(得分:1)

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")
)