2015-03-27 11 views
6

Chciałbym lub dowolny wariant, aby utworzyć ".jar" z mojego projektu, który zawierałby również źródła (pliki ".java" i ".scala").Howto utworzyć .jar zawierający oba źródła (.java i .scala) i klasy z sbt?

Byłoby to połączenie pakietów package i packageSrc.

ja nie:

  • znaleźć żadnego zadania, które to zrobić?
  • znaleźć w jaki sposób dostosować zadanie pakietu
  • ani zdefiniować nowe zadanie kopalni to osiągnąć

Dzięki za podpowiedź.

+0

możliwe duplikat [Scala SBT: samodzielny jar] (http: // stackove rflow.com/questions/6026149/scala-sbt-standalone-jar) – Mogsdad

Odpowiedz

2

Patrząc na documentation, prawdopodobnie powinieneś dodać rzeczy do klucza mappings w zakresie packageBin. Poniższa wydaje się działać dla mnie:

mappings in (Compile, packageBin) ++= (mappings in (Compile, packageSrc)).value 
2

Oto jak skonfigurować autonomiczny zadanie stworzenia artefaktu z plików binarnych i źródeł, pozostawiając packageBin i packageSrc nienaruszone:

val packageBinSrc = taskKey[File]("Produces an artifact containing both binaries and sources.") 

artifactClassifier in packageBinSrc := Some("binsrc") 
inConfig(Compile) { 
    import Defaults._ 
    packageTaskSettings(packageBinSrc, concatMappings(packageBinMappings, packageSrcMappings)) 
} 

Opcjonalnie, jeśli masz ochotę, można przedefiniować package używać packageBinSrc:

Keys.`package` := (packageBinSrc in Compile).value 
+0

Ponieważ w jednym wystąpiły dwa pytania, obie odpowiedzi są dla mnie interesujące. Niestety, muszę oznaczyć jeden jako "najlepszy". Wybrałem najkrótszy ... Wielkie dzięki za te odpowiedzi – ttamttam

+0

Powiedziałbym, że przełamujesz intencję 'packageBin', dodając do niej źródła, ale jest to mniej kodu instalacyjnego, aby mieć pewność. –