sbt.version = 0.13.1
在build.sbt我通过调用我的项目依赖项代码来分配设置键,然后通过Typesafe Config配置自己的代码ConfigFactory.我的依赖有一个reference.conf罐子里的根,我的项目本身包含一个压倒一切application.conf的src/main/resources.
lib/dependency也是我的代码,顺便说一句.
import com.mylib.Finders
import com.myproj.sbt.Keys._
projKeyColorSetting in Compile := Finders.findColor // this calls ConfigFactory.load
seq(projSettings:_*)
Run Code Online (Sandbox Code Playgroud)
构建甚至没有加载,因为它找不到我试图在我的lib代码中引用的第一个conf键.
我在构建文件中尝试了一些范围和类路径操作的组合,但无济于事.我假设jar reference.conf会出现在Compile作用域的类路径上,但它不能像我预期的那样工作.
昨天我花了大部分时间仔细阅读有关Classpath,Scopes,Keys,Tasks和ResourceGenerators的SBT文档 - 我的目的是执行一个依赖于以下projKeyColorSetting设置的自定义插件build.sbt:
lazy val projSettings = inConfig(Compile) {
Seq(
resourceGenerators in Compile <+= Def.task {
val fileCreated = createColorFile(projKeyColorSetting.value)
Seq(fileCreated)
}
)
}
Run Code Online (Sandbox Code Playgroud)
如果你从foo.jar获得一个类,那么ConfigFactory.load()应该在同一个jar中找到一个reference.conf.如果没有,那么有些事情是错的,但很难猜到是什么.可能是reference.conf中可能存在一些无效的语法; 可能是reference.conf不在jar中; 可能是reference.conf在子目录而不是jar的根目录中; 很难猜到.我试着-Dconfig.trace=loads在那里寻找问题(它应该告诉你配置是否试图加载reference.conf).您也可以自己动手classLoader.getResources,看看是否可以找到没有配置的文件.您也可以尝试ConfigFactory.parseResourcesAnySyntax("reference")查看您的参考设置是否在那里,然后尝试ConfigFactory.load直接调用并查看您的设置是否在那里.一般来说,仔细检查所有假设并查看它出错的地方.
至于如何添加src/main/resources,两个基本策略是1)以某种方式在类路径上获取它(在这种情况下可能很难;你甚至在启动sbt之前需要它或者需要做某种事情自定义ClassLoader乐趣)或可能更实用2)手动加载它ConfigFactory.parseFile().
我可能会抓住resourceDirectory密钥作为您的任务的依赖项,然后执行类似(未经测试)的操作:
myTask := {
val resourceDir = (resourceDirectory in Compile).value
val appConfig = ConfigFactory.parseFile(resourceDir / "application.conf")
val config = ConfigFactory.load(appConfig) // puts reference.conf underneath
Finders.findColor(config)
}
Run Code Online (Sandbox Code Playgroud)
请注意,这涉及更改findColor以获取Config参数,或者您可能希望使Finders成为可以使用Config; 构造的非单例; 请参阅https://github.com/typesafehub/config/blob/master/examples/scala/simple-lib/src/main/scala/simplelib/SimpleLib.scala#L22上的示例,其中我试图说明使用时一个Config通常国会图书馆应该都默认ConfigFactory.load,但也有一个构造函数,允许自定义Config为这样的情况.
| 归档时间: |
|
| 查看次数: |
12278 次 |
| 最近记录: |