公開されたアーティファクトにsbtにJava以外のソースを含めるにはどうすればよいですか?


8

公開されたアーティファクトにsbtにJava以外のソースを含めるにはどうすればよいですか?

Kotlinプラグインを使用していて、公開されたソースjarに.ktファイルを含めるようにsbtを強制する方法がわかりません。.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

1
私もそれを理解できませんでした-SBTのバグのようで、*。scalaファイルと* .javaファイルのみをフィルタリングします(Kotlinの誇大宣伝の前に行われた可能性があります)。たとえば、*。scalaファイルのsrc/main/kotlin作品
pme

回答:


0

kotlinに使用するプラグインはどれですか?

https://github.com/pfn/kotlin-pluginには、kotlinSourceソースディレクトリの場所を構成するオプションがあります。

sbt packageBin コンパイルされたkotlinファイルとそれらを出力jarに含めます。

build.sbt

// define kotlin source directory
kotlinSource in Compile := baseDirectory.value / "src/main/kotlin",

src / main / kotlin / org.test

package org.test

fun main(args: Array<String>) {
    println("Hello World!")
}

コンソール

sbt compile
sbt packageBin

target / scala-2.13

jarにはMainKt.classが含まれます

フォルダーorg / testにもMainKt.classが含まれています。

これはあなたの問題を解決しますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.