Como faço para incluir o sbt fontes não Java no artefato publicado?


8

Como faço para incluir o sbt fontes não Java no artefato publicado?

Estou usando o plugin Kotlin e não consigo descobrir como forçar o sbt a incluir o arquivo .kt no jar de origem publicado. Inclui apenas arquivos .java.

Muitas pessoas online sugerem adicionar o seguinte código ao script sbt, mas isso não ajuda

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

Eu também tentei

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

Aqui está a saída de algumas variáveis ​​no console 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
Também não consegui descobrir isso - parece um bug no SBT, que apenas filtra os arquivos * .scala e * .java (talvez tenha sido feito antes do hype do Kotlin;). Por exemplo, arquivos * .scala em src/main/kotlinobras
pme

Respostas:


0

qual plugin você usa para o kotlin?

https://github.com/pfn/kotlin-plugin tem a opção kotlinSourcede configurar onde o diretório de origem está localizado.

sbt packageBin arquivos kotlin compilados e inclua-os na saída 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!")
}

console

sbt compile
sbt packageBin

target / scala-2.13

jar inclui MainKt.class

e a pasta org / test também contém MainKt.class.

isso resolveria seu problema?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.