lpi*_*ora 11
首先澄清一下,它们包含在包含编译类的jar中.它们不包含在含有来源的罐子中.
默认情况下,生成的资源不包含在打包的 源工件中.
对于packageBin生成的文件应该已经包含 - 只需确保从生成器方法返回所有生成的文件.假设您想将它们打包在sources工件中,这就是您必须要做的.
假设您有一个生成属性文件的生成器.
lazy val generatePropertiesTask = Def.task {
val file = (resourceManaged in Compile).value / "stack-overflow" / "res.properties"
val contents = s"name=${name.value}\nversion=${version.value}"
IO.write(file, contents)
Seq(file)
}
resourceGenerators in Compile += generatePropertiesTask.taskValue
Run Code Online (Sandbox Code Playgroud)
要在生成的源中包含它,您必须告诉sbt res.properties必须在生成的源artefact中复制的位置.生成包装源的任务被调用packageSrc,因此您必须将作用域设置为该任务.
mappings in (Compile, packageSrc) += {
((resourceManaged in Compile).value / "stack-overflow" / "res.properties") -> "path/in/jar/res.properties"
}
Run Code Online (Sandbox Code Playgroud)
因为您的生成器可以生成许多任务,并且每个手动映射将是一项繁琐的任务,sbt为您提供了一次实现多个路径映射的实用程序.
mappings in (Compile, packageSrc) ++= {
val allGeneratedFiles = ((resourceManaged in Compile).value ** "*") filter { _.isFile }
allGeneratedFiles.get pair relativeTo((resourceManaged in Compile).value)
}
Run Code Online (Sandbox Code Playgroud)
第一行使用路径查找器查找所有生成的文件,第二行将它们映射到目标jar中的路径.
| 归档时间: |
|
| 查看次数: |
2791 次 |
| 最近记录: |