【发布时间】:2020-04-03 00:08:47
【问题描述】:
如何让 sbt 将非 Java 源代码包含到已发布的工件中?
我正在使用 Kotlin 插件,但不知道如何强制 sbt 将 .kt 文件包含到已发布的源 jar 中。它只包含 .java 文件。
网上很多人建议在 sbt 脚本中添加以下代码,但没有帮助
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) }
},
我也试过了
includeFilter in (Compile, packageSrc) := "*.scala" || "*.java" || "*.kt",
这是 sbt 控制台中一些变量的输出
sbt:collections> show unmanagedSourceDirectories
[info] * /home/expert/work/sideprojects/unoexperto/extensions-collections/src/main/scala
[info] * /home/expert/work/sideprojects/unoexperto/extensions-collections/src/main/java
[info] * /home/expert/work/sideprojects/unoexperto/extensions-collections/src/main/kotlin
sbt:collections> show unmanagedSources
[info] * /home/expert/work/sideprojects/unoexperto/extensions-collections/src/main/java/com/walkmind/extensions/collections/TestSomething.java
【问题讨论】:
-
我也想不通 - 似乎是 SBT 中的一个错误,它只过滤 *.scala 和 *.java 文件(可能在 Kotlin 炒作之前完成;)。例如,
src/main/kotlin中的 *.scala 文件有效