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

如何在我自己的项目中使用分叉SBT插件,sbt,Sbt,以下是我遵循的步骤: 我有一个第三方插件 我已经修改了它,并成功运行了sbt publishLocal 为了测试它,在一个项目的plugins.sbt文件中,我将addSbtPlugin(“company”%%“some plugin”%%“0.6.5”)更改为: lazy val root=project.in(文件(“.”).dependsOn(somePlugin) lazy val somePlugin=project.in(文件(System.getProperty(“user.ho

以下是我遵循的步骤:

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

    lazy val root=project.in(文件(“.”).dependsOn(somePlugin)

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

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

我还试图引用
~/.sbt/local/…
,即
publishLocal
放置编译插件的目录,但没有成功。我不知道我到底要引用什么(文件夹、生成的
.jar
ivy.xml
文件等等)

问题:

  • 使用本地内置插件的最佳方式是什么
  • 为什么它要单独编译,但嵌入到我的项目中时却不能编译
注:

  • 这个问题与这个问题密切相关:
  • 我使用的是SBT 0.13.7

    • 解决方案很简单。我遵循了以下步骤:

      • 我有一个现有的项目
      • 我更改了
        组织机构
        ,以使其具有唯一性,并且不会与原始作者发生冲突。我使用类似于
        organization:=com.github.myuser
      • 我修改代码
      • 我在
        bintray
        中创建了一个帐户,并按照该帐户使用
        sbt publish
      • 在一个示例项目中,我通过在
        plugins.sbt
        中添加这一行来导入我的自定义插件:
        addSbtPlugin(“com.github.myuser”%%“myplugin”%%“1.0”)
      • 如果我犯了错误,不想增加版本,我会这样做:

        sbt;bintray::取消发布;发表

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


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

      一个更好的解决方案,当唯一的目的是测试未来的拉请求时非常适合:

      • 分叉现有项目
      • 将版本更改为以-SNAPSHOT结尾
      • 做些改变
      • 调用
        sbt publishLocal
      • 创建一个示例项目以测试它,该项目引用-SNAPSHOT版本
      • 在重新编译项目时,
        reload
        挂起整个JVM。我必须退出
        SBT
        ,然后再次进入
      • 工作时,向作者发出
        拉取请求
      建议:使用以离开工作测试