2014-08-27 27 views
8

Yerel kütüphanelerin yüklenmesini gerektiren bir proje üzerinde çalışıyordum ve şimdiye kadar tüm gelişmeler Linux ile sınırlıydı. Projemi run için, ben sadece ayrılmasının etkinleştirmek ve aşağıdaki gibi java.library.path değiştirebilir:SBT: Çapraz platform yolu java.library.path?

javaOptions in run += "-Djava.library.path=some/common/path:lib/native/linux" 

Sorum şu: Ben çapraz platform yolla aynı şeyi nasıl ben yapımın üzerinde paylaşabilmesi. Windows tabanlı bir geliştirici ile sbt. Orada şimdiye kadar çözemedim özellikle üç şey vardır:

  • Ben SBT "dir1"/"dir2" gibi platformdan bağımsız yolları oluşturmak için izin verdiğini biliyorum ama katılmak için bir çapraz platform yolu farkında değilim çoklu yollar (Linux'ta : ve Windows'ta ; olduğundan).
  • o platformda ya lib/native/linuxveyalib/native/windows bağımlı eklemek mümkün mü?
  • Yukarıdaki yaklaşımın üzerine yazım java.library.path - bunun yerine eklemek mümkün mü?

cevap

5

herhangi Scala kodu kullanabilirsiniz yana bu son soruya cevap vermez gerçi, elbette

val folderName = 
    if (System.getProperty("os.name").startsWith("Windows")) "windows" else "linux" 

val libPath = Seq("some/common/path", s"lib/native/$folderName").mkString(java.io.File.pathSeparator) 

javaOptions in run += s"-Djava.library.path=$libPath" 

yapabilirsiniz.

+0

Bu iyi görünüyor. Ben hala SBT 0.12 kullanıyorum ve genel olarak, bir sürüm agnostik çözüm umuyordum bahsetmeyi unuttum. Ama bence bu fikir de 0.12'de çalışıyor. Dize'den (sanırım) Dosyaya dolaylı bir dönüşüm olmadığından SBT'nin '/' sözdizimini kullanmak için hala zor bir zamanım var. Ama elbette her zaman "separatorChar" ile manuel olarak yapmanın işi var. Ve hata ayıklama amaçları için: 'java-options' nı her zaman niçin sadece 'List() 'döndürüyor? – bluenote10

+0

Evet, bu 0,12'de iyi çalışmalı. IIRC hariç, yapı konfigürasyonu için Scala 2.9 kullanır, böylece string enterpolasyonu + ile değiştirilmelidir. Son soru için bilmiyorum. Belki ayrı ayrı sor? –

+2

System.getProperty ("java.library.path") 'hakkında ne var? –

İlgili konular