如何在我自己的项目中使用分叉的SBT插件

时间:2015-01-29 16:58:29

标签: sbt

这些是我遵循的步骤:

  • 我已经分叉了第三方插件。
  • 我修改了它,并成功运行sbt publishLocal
  • 为了测试它,在项目的plugins.sbt文件中,我已将addSbtPlugin("company" % "some-plugin" % "0.6.5")更改为:

    lazy val root = project.in(file(“。”))。dependsOn(somePlugin)

    lazy val somePlugin = project.in(file(System.getProperty(“user.home”)+“/ customPath /”))

但是SBT无法以这种方式编译插件,因为它找不到插件的已使用插件,即使我已经能够。

我也尝试引用~/.sbt/local/....,即publishLocal放置已编译插件的目录,但没有成功。我不知道我必须准确引用什么(文件夹,生成的.jarivy.xml文件,...)。

问题:

  • 使用本地构建的插件的最佳方法是什么?
  • 为什么单独编译,但在嵌入我的项目时不会编译?。

注意:

2 个答案:

答案 0 :(得分:1)

解决方案很简单。我按照这个步骤:

  • 我分叉现有项目
  • 我更改了organization以使其独一无二,而不是与原作者发生冲突。我使用organization := com.github.myuser
  • 之类的东西
  • 我修改了代码
  • 我在bintray创建了一个帐户,并点击了this guide以便使用sbt publish
  • 发布我的自定义插件
  • 在示例项目中,我通过在plugins.sbt中添加此行来导入我的自定义插件:addSbtPlugin("com.github.myuser" % "myplugin" % "1.0")
  • 如果我犯了一个错误并且不想增加版本,我会这样做:

    sbt; bintray :: unpublish; publish

速度很快,我不得不等几秒钟。我知道没有其他人在使用我的插件。

也许publishLocal更好,不需要使用第三方存储库,但我不知道它是如何工作的。这对我有用。

答案 1 :(得分:1)

更好的解决方案,非常适用于测试未来拉取请求的唯一目的

  • 分叉现有项目
  • 使用-SNAPSHOT
  • 更改版本
  • 进行更改
  • 调用sbt publishLocal
  • 创建一个示例项目以进行测试,引用-SNAPSHOT版本
  • 如果再次重新编译项目,reload将挂起整个JVM。我必须退出SBT并再次输入。
  • 工作时,向作者提出pull request

建议:使用scripted test framework以便进行有效测试。