¿Cómo hago para que sbt incluya fuentes que no son de Java en artefactos publicados?

8

¿Cómo hago para que sbt incluya fuentes que no son de Java en artefactos publicados?

Estoy usando el complemento Kotlin y no puedo entender cómo forzar a sbt a incluir el archivo .kt en el jar fuente publicado. Solo incluye archivos .java.

Mucha gente en línea sugiere agregar el siguiente código al script sbt pero no ayuda

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

También intenté

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

Aquí está la salida de algunas variables en la consola 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
experto
fuente
1
No pude entender eso tampoco: parece un error en SBT, que solo filtra los archivos * .scala y * .java (tal vez se hizo antes del bombo de Kotlin;). Por ejemplo, archivos * .scala en src/main/kotlinobras
pme

Respuestas:

0

¿Qué plugin usas para Kotlin?

https://github.com/pfn/kotlin-plugin tiene la opción kotlinSourcede configurar dónde se encuentra el directorio de origen.

sbt packageBin compiló los archivos de Kotlin e inclúyalos en la salida 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!")
}

consola

sbt compile
sbt packageBin

target / scala-2.13

jar incluye MainKt.class

y la carpeta org / test también contiene MainKt.class.

¿esto resolvería tu problema?

SourceCodeBot
fuente