2015-03-27 5 views
6

Desidero sbt package o qualsiasi variante per produrre un '.jar' dal mio progetto che includa anche i sorgenti (file '.java' e '.scala').Come creare un .jar includendo entrambe le fonti (.java e .scala) e le classi con sbt?

Questo sarebbe un mix di packageBin e packageSrc.

non l'ho fatto:

  • trovare qualsiasi compito che farebbe questo?
  • scopri come adattare compito pacchetto
  • né definire un nuovo compito di miniera per raggiungere questo

Grazie per qualsiasi suggerimento.

+0

possibile duplicato di [Scala SBT: vaso autonomo] (http: // stackove rflow.com/questions/6026149/scala-sbt-standalone-jar) – Mogsdad

risposta

2

Guardando allo documentation, è consigliabile aggiungere elementi alla chiave mappings nell'ambito packageBin. Quanto segue sembra funzionare per me:

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

Ecco come impostare un compito autonomo per la creazione di un artefatto con binari e sorgenti, lasciando packageBin e packageSrc inalterato:

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

In alternativa, se avete voglia, è possibile ridefinire package di utilizzare packageBinSrc:

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

Dato che c'erano due domande in una, entrambe le risposte sono interessanti per me. Sfortunatamente, devo contrassegnarne uno come "migliore". Ho scelto il più breve ... Grazie mille per quelle risposte – ttamttam

+0

Direi che stai rompendo l'intento di 'pacchettoBin' aggiungendo sorgenti ad esso, ma è meno codice di installazione per essere sicuro. –