2015-03-27 3 views
6

Ich möchte sbt package oder irgendeine Variante, um ein '.jar' von meinem Projekt zu erzeugen, das auch die Quellen ('.java' und '.scala' Dateien) enthalten würde.Wie erstelle ich ein .jar mit beiden Quellen (.java und .scala) und Klassen mit sbt?

Dies wäre eine Mischung aus packageBin und packageSrc.

ich nicht:

  • jede Aufgabe finden, die dies tun würde?
  • finden, wie Paket Aufgabe
  • anzupassen noch eine neue Aufgabe von mir definieren diese für jeden Hinweis

Dank zu erreichen.

+0

möglich Duplikat [Scala SBT: Standalone-jar] (http: // stackove rflow.com/questions/6026149/scala-sbt-standalone-jar) – Mogsdad

Antwort

2

Mit Blick auf die documentation, sollten Sie wahrscheinlich Sachen zu dem mappings Schlüssel in der packageBin Bereich hinzufügen. Die folgende scheint für mich zu arbeiten:

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

Hier ist, wie ein Artefakt eine eigenständige Aufgabe zu Setup mit Binärdateien und Quellen für die Erstellung, so dass packageBin und packageSrc unberührt:

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

Optional, wenn Sie Lust haben, Sie können package neu definieren packageBinSrc zu verwenden:

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

Da es zwei Fragen in einem gab, sind beide Antworten für mich von Interesse. Leider muss ich einen als "besten" markieren. Ich wählte die kürzeste ... Vielen Dank für diese Antworten – ttamttam

+0

Ich würde argumentieren, dass Sie die Absicht von 'packageBin' brechen, indem Sie Quellen hinzufügen, aber es ist weniger Setup-Code, um sicher zu sein. –