2015-03-27 14 views
6

sbt package veya herhangi bir varyantı, projemi de içeren kaynaklardan ('.java' ve '.scala' dosyaları) üretmek için '.jar' üretmek istiyorum.Her iki kaynağı (.java ve .scala) ve sbt sınıflarını içeren bir .jar nasıl oluşturulur?

Bu, packageBin ve packageSrc'nin bir karışımı olabilir.

yapmadım:

  • bu yapacağını herhangi görev bulmak?
  • paket görevi
  • adapte ne de herhangi bir ipucu için bu

Teşekkür elde etmek benim yeni bir görev tanımlamak için nasıl bulmak.

+0

olası yinelenen: (http: // stackove Eğer packageBinSrc kullanmak package yeniden tanımlayabilirsiniz rflow.com/questions/6026149/scala-sbt-standalone-jar) – Mogsdad

cevap

2

documentation'a baktığınızda, packageBin kapsamındaki mappings anahtarına büyük olasılıkla bir şeyler eklemelisiniz. şu benim için iş gibi görünüyor:

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

İşte nasıl kurulum, ikili ve kaynaklarla bir obje yaratmak etkilenmemiş packageBin ve packageSrc bırakmak için tek başına bir görev için:

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

İsteğe bağlı olarak, fantezi eğer,

Keys.`package` := (packageBinSrc in Compile).value 
[Scala SBT: Tek başına kavanoz] arasında
+0

Birinde iki soru olduğundan, her iki cevap da benim için ilgi çekicidir. Ne yazık ki, birini "en iyi" olarak işaretlemeliyim. En kısa zamanda onu seçtim… – ttamttam

+0

Bu yanıtlar için çok teşekkür ederim, kaynaklara ekleyerek 'packageBin 'amacını ihlal ettiğinizi iddia ediyorum, ancak emin olmak için daha az kurulum kodu. –

İlgili konular