我有一个项目,其中一部分源码是通过Compile sourceGenerators
生成的。我注意到(在大多数情况下是合理的),这些源码不会随publishLocal
或publishSigned
一起发布。在这种情况下,这很不幸,因为当您将此项目/库用作依赖项时,即使已下载其他项目的源代码,您也无法查找源代码,例如在IntelliJ中。
我能否配置sbt的发布设置以将生成的源代码包括在Maven的-sources.jar
中?
所以,为了完整起见,这是基于 @pfn 回答的我的解决方案:
mappings in (Compile, packageSrc) ++= {
val base = (sourceManaged in Compile).value
val files = (managedSources in Compile).value
files.map { f => (f, f.relativeTo(base).get.getPath) }
}
mappings in (Compile,packageSrc) := (managedSources in Compile).value map (s => (s,s.getName)),
就像 @0__ 的回答一样,但是移植到了“新”的 sbt 语法,即没有弃用警告。
Compile/packageSrc/mappings ++= {
val base = (Compile/sourceManaged).value
val files = (Compile/managedSources).value
files.map(f => (f, f.relativeTo(base).get.getPath))
}
++=
而不是:=
,这样常规的源就不会被删除了吧? - 0__s.getName
。 - pfn