测试 sbt 插件
Posted
技术标签:
【中文标题】测试 sbt 插件【英文标题】:Test sbt plugin 【发布时间】:2019-05-11 19:13:28 【问题描述】:为 sbt 0.13 编写我的第一个插件并尝试关注 https://www.scala-sbt.org/0.13/docs/Testing-sbt-plugins.html。 在进入第 5 步之前,这一切都像宣传的那样工作。它会打印消息“正在运行.../简单”并且永远不会从那里继续:
build/sbt -Dplugin.version=0.14.8
Detected CYGWIN environment
Reading sbt jar from: build/sbt-launch-0_13_9.jar
[info] Loading project definition from project\home\dir\sheep-metadata-plugin\project
[info] Updating file:/project/home/dir/sheep-metadata-plugin/project/sheep-metadata-plugin-build...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Set current project to sheep_metadata (in build file:/project/home/dir/sheep-metadata-plugin/)
> set scriptedBufferLog := false
[info] Defining sheep_metadata/*:scriptedBufferLog
[info] The new value will be used by sheep_metadata/*:scripted
[info] Reapplying settings...
[info] Set current project to sheep_metadata (in build file:/project/home/dir/sheep-metadata-plugin/)
> scripted
[info] :: delivering :: com.myco.sheep.sbt#metadata;0.0.1-SNAPSHOT :: 0.0.1-SNAPSHOT :: integration :: Mon Dec 10 15:11:00 EST 2018
[info] delivering ivy file to project\home\dir\sheep-metadata-plugin\metadata\target\sbt-0.13\ivy-0.0.1-SNAPSHOT.xml
[info] Packaging project\home\dir\sheep-metadata-plugin\metadata\target\sbt-0.13\metadata-0.0.1-SNAPSHOT.jar ...
[info] Done packaging.
[info] published metadata to myHomeDir\.ivy2\local\com.myco.sheep.sbt\metadata\scala_2.10\sbt_0.13\0.0.1-SNAPSHOT\jars\metadata.jar
[info] published metadata to myHomeDir\.ivy2\local\com.myco.sheep.sbt\metadata\scala_2.10\sbt_0.13\0.0.1-SNAPSHOT\srcs\metadata-sources.jar
[info] published metadata to myHomeDir\.ivy2\local\com.myco.sheep.sbt\metadata\scala_2.10\sbt_0.13\0.0.1-SNAPSHOT\docs\metadata-javadoc.jar
[info] published ivy to myHomeDir\.ivy2\local\com.myco.sheep.sbt\metadata\scala_2.10\sbt_0.13\0.0.1-SNAPSHOT\ivys\ivy.xml
Running sheep-metadata-plugin / simple
主项目的构建工作:
build/sbt -Dplugin.version=0.14.8 clean update compile
但是当我尝试教程中的第 5 步(即运行 scripted
)时,没有错误消息,但也没有成功 - 它永远不会终止。
更新:在 Windows 7 + Babun Cygwin 上,我没有收到错误消息。在 Linux 上,sbt 抱怨 plugin.version
,尽管我按照指示传递了它。
[info] java.lang.RuntimeException: The system property 'plugin.version' is not defined.
[info] Specify this property using the scriptedLaunchOpts -D.
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:已修复/澄清/找到解决方法:
首先,我们澄清一下https://www.scala-sbt.org/0.13/docs/Testing-sbt-plugins.html中引用的assembly
插件必须添加到simple
项目中,而不是主项目中。
接下来,我放弃了通过命令行参数设置sbt-assembly
版本号,直接指定了
sheep-metadata-plugin\metadata\src\sbt-test\sheep-metadata-plugin\simple\project\plugins.sbt
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.8")
如果有人弄清楚如何使示例按照教程中的说明工作,那就太好了。
【讨论】:
以上是关于测试 sbt 插件的主要内容,如果未能解决你的问题,请参考以下文章