使用sbt

时间:2016-04-08 22:16:38

标签: scala maven sbt

我在SBT中寻找Maven用于资源过滤的相同功能,但不是开箱即用的。

在这里和其他地方搜索了相当多的内容之后,我发现两个插件的功能都很接近,但是没有一个真正做到了。例如,xsbt-filter不会过滤${baseDirectory}等令牌,而sbt-editsource不能与单元或集成测试结合使用(请参阅issue 9

所以,我试图通过修改这两个插件中的一个来自己编码,但是这里是我无法在SBT中找到的问题,对它来说是新手(而不是Scala pro):

如何重复使用SBT构建设置进行令牌解析?

这些设置位于对象sbt.Keys中。例如,baseDirectory是:

val baseDirectory = SettingKey[File]("base-directory")

有许多(可能是数百个)可用于解析资源文件中的令牌。

最后,为了在插件代码中进行令牌解析,您需要键中存在的所有构建设置的映射Map[String, String],即键是“baseDirectory”,并且值是编译时的值,该值是

我假设有一种方法是使用反射,但在走这条路之前,我想我是否有更标准的方法从sbt插件执行此操作,这看起来相当基本。

到目前为止我看过的所有插件都是复制并粘贴每个Keys设置(将变量名称转换为键的字符串)到它们的插件代码中。

对于那些不熟悉资源过滤的人来说,这意味着构建工具应该能够解析资源文件中存在的所有令牌,并且在编译时将资源文件替换为其值后的令牌密钥(例如:resource文件是“/User/me/Documents/myproject/src/test/resources/myfile.txt”,其中的文字有一个字符串${target},其中“target”是关键字,而“/User/me/Documents/myproject/target”恰好是该特定版本中的值)。

0 个答案:

没有答案