测试自定义SBT命令行应用程序

时间:2018-11-23 17:17:12

标签: scala sbt

根据文档here,我一直在开发自定义SBT CLI应用程序。它有效,但是我的问题是测试非常麻烦。

问题在于,您需要在sometool.build.properties部分的[app]文件中设置应用程序的版本。我的是这样的:

[app]
org: com.something
name: sometool
version: 0.2-SNAPSHOT
class: com.something.SomeTool
components: xsbti
cross-versioned: binary

然后我运行sbt publishLocalsbt @src/main/resources/sometool.build.properties。这将获取sometool应用程序的打包版本并运行它。问题是,当我更改代码并运行另一个publishLocal时,它将继续获取旧版本。我尝试过sbt clean,从我的本地常春藤缓存中删除了jar,然后从项目的target目录中删除了jar,但是仍然得到了旧版本。

我可以通过同时更改build.sbtsometool.build.properties中的版本来解决此问题,但是每次要测试更改时,这样做都是很烦人的。必须有一种更好的方法对此进行测试,但我不知道它是什么。

任何想法或建议都会受到赞赏。

修改 几天后看一下,找出使用哪个文件非常简单。我检查了SBT进程的打开文件描述符,发现将jar下载到<project_root>/project/boot/scala-<version>/<app.org>/<app.name>/<app.version>

删除此选项将强制SBT重新获取依赖项,前提是您之前运行过sbt publishLocal

但是,sbt cleansbt cleanFiles都没有清理干净,这意味着每次我要运行新版本时,仍然必须手动删除此文件。

编辑2 我在构建中添加了cleanFiles <+= baseDirectory{base => base / "project" / "boot"},,这意味着我现在至少可以管理SBT中的所有内容。缺点是每次运行sbt clean都会清除不必要的内容,因此我仍在寻找一种更好的方法来实现此目的。

0 个答案:

没有答案