Wie kann ich dafür sorgen, dass sbt Nicht-Java-Quellen in veröffentlichte Artefakte einbezieht?

8

Wie kann ich dafür sorgen, dass sbt Nicht-Java-Quellen in veröffentlichte Artefakte einbezieht?

Ich verwende das Kotlin-Plugin und kann nicht herausfinden, wie ich sbt zwingen kann, eine .kt-Datei in das veröffentlichte Quell-Jar aufzunehmen. Es enthält nur Java-Dateien.

Viele Leute im Internet schlagen vor, dem sbt-Skript folgenden Code hinzuzufügen, aber es hilft nicht

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) }
},

Ich habe es auch versucht

includeFilter in (Compile, packageSrc) := "*.scala" || "*.java" || "*.kt",

Hier werden einige Variablen in der sbt-Konsole ausgegeben

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
Experte
quelle
1
Ich konnte das auch nicht herausfinden - scheint ein Fehler in SBT zu sein, der nur * .scala- und * .java-Dateien filtert (wurde vielleicht vor dem Kotlin-Hype gemacht;). Zum Beispiel * .scala-Dateien in src/main/kotlinWerken
pme

Antworten:

0

Welches Plugin benutzt du für Kotlin?

https://github.com/pfn/kotlin-plugin bietet die Möglichkeit kotlinSourcezu konfigurieren, wo sich das Quellverzeichnis befindet.

sbt packageBin kompilierte Kotlin-Dateien und füge sie zur Ausgabe von jar hinzu.

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!")
}

Konsole

sbt compile
sbt packageBin

Ziel / Scala-2.13

jar gehören MainKt.class

und der Ordner org / test enthält auch MainKt.class.

Würde dies Ihr Problem lösen?

SourceCodeBot
quelle