【问题标题】:How to 'embed' SBT plugin in my Scala project如何在我的 Scala 项目中“嵌入”SBT 插件
【发布时间】:2015-06-18 20:45:48
【问题描述】:

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

谁能给我简要介绍一下将功能导入我的项目的步骤,以便我可以自定义它?它是一个单一的对象。

  • 如果对象“挂钩”到compile 任务中,那么我认为它仍应扩展plugin

  • 目前,import sbt.Keys._ 出现编译错误

import sbt._ 有效

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

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

build.properties 包含sbt.version=0.13.5

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


编辑。

我正在使用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")

【问题讨论】:

  • 你能展示你的完整 build.sbt 文件吗?
  • 你看过scala-sbt.org/0.13/docs/Plugins.html吗?它描述了如何编写一个简单的插件。顺便说一句,最新的 sbt 版本是 0.13.8,虽然我认为编写插件应该没关系。
  • @JamieP 你能分享一下你所说的 SBT 插件吗?可能有助于回答问题。
  • 感谢您的 cmets - 我已经编辑了上面的帖子。

标签: scala sbt sbt-plugin


【解决方案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")
)

【讨论】:

    猜你喜欢
    • 2012-07-10
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 2019-02-12
    • 2017-03-07
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多