2013-07-25 18 views
11

Ben scala kodlama ve sbt-assembly eklentisi ile SBT kullanıyorum. Projemin çok fazla harici kütüphanesi var ve bu yüzden sbt-assembly JAR dosyasını paketlemek için uzun zaman alıyor. Kodum için ve dependanclar için ayrı bir jar dosyaları istiyorum. Bu nedenle, sadece kodumu yeniden derleyip yeniden gönderebilirim. Bu nasıl yapılır? Bugüne kadarsbt-assembly: dependanc kavanozun ana kavanoza nasıl bağlanır?

İlerleme:

assembleArtifact in packageScala := false

assembleArtifact in packageDependency := false

Sonra ayrı kavanoz tarafından inşa edilebilir: build.sbt yılında

Aşağıdaki komutlar kütüphaneleri ambalaj gelen sbt-montaj önler aşağıdaki komutları geçerek: assembly, assembly-package-scala ve assembly-package-dependency. Üç tane kavanoz yaparlar: biri programımı, biri scala kütüphaneleri ve biri de dependansları olan birini içerir. Ancak, ayrı jar dosyasındaki bağımlılıkları görmediğinden, jar dosyası artık yürütülebilir değil. Bence assembly-sbt'ye bir classpath eklemem gerek ama bunu nasıl yapacağımı bilmiyorum. Lütfen yardım (SBT'ye yeni olduğum için detaylı yorumlar takdir ediliyor). Teşekkürler!

cevap

5

Bkz. Setting Classpath Still Can't Find External Jar. Oracle diyor ki:

Bu seçeneği kullandığınızda, JAR dosyası tüm kullanıcı sınıflarının kaynağıdır ve diğer kullanıcı sınıfı yol ayarları göz ardı edilir.

java -cp "foo-assembly-0.1-deps.jar:foo-assembly-0.1.jar" Main 
Main ana sınıfının adıdır

ve :, OS (Windows ;) dosya ayırıcı geçerli:

Yani, söylemek zorundayım.

Şu anda assembly-package-scala içinde bir hata var gibi görünüyor ve boş çıkıyor, ama önemli değil çünkü assembly-package-dependency Scala kitaplığı içerir.

+0

Çalışıyor! ve hızlıdır: zaman yaklaşık 40 saniyeden birkaç saniyeye düşer. Teknik not: Scala-library-2.10.2-assembly.jar'ı da dahil etmem gerekiyordu, çünkü aksi halde scala repl değeri kararsızdı. Sbt 0.12.4 ve sbt-assembly 0.9.0 ile derlemeyi yapabilirim. – Karolis

+0

Bu sınıf başvurusunu ana jar dosyasına paketlemenin bir yolu var mı? Bu yüzden üzerine tıklayarak kavanoz yürütmek mümkün olacaktır. – Karolis

+0

[sbt-onejar] (https://github.com/sbt/sbt-onejar) diğer kavanozları içeren bir kavanoz yapabilir ve daha hızlı paketler. Fakat sbt-montajının daha hızlı başladığını duyuyorum çünkü muhtemelen sbt-ferretli kavanozun sivri uçtan kurtulmak zorunda kalması gerekiyor. sbt-assembly 0.9.0 önbellek lib unzips böylece onları bölmek zorunda kalmamalısınız. –

İlgili konular