2010-10-29 4 views
5

Ich habe ein Projekt läuft einfach gebaut Werkzeug als Bauwerkzeug. Alle meine Unterprojekte teilen die gleichen Abhängigkeiten, deshalb möchte ich, dass sie den gleichen lib Ordner benutzen. Ich könnte dies tun, indem ich symbolische Links zu meinem freigegebenen lib-Ordner erstelle, aber ich hoffe, eine Konfiguration in sbt zu finden, die mich zum Pfad meiner Bibliotheken wechseln lässt.Wie teile ich meinen lib-Ordner in Teilprojekten von Simple Build Tool

override def dependencyPath = ".."/"lib" 

nicht funktioniert, ".." in Pfade nicht erlaubt ist

class Top(info:ProjectInfo) extends ParentProject(info){ 
    lazy val subproject = project("sub","Sub Project",info => SubProject(info,dependencyPath) 

    class SubProject extends DefaultProject(info:ProjectInfo,libdir:Path){ 
     override def dependencyPath = libdir 
    } 
} 

nicht funktioniert, ist dependencyPath ein Projekt relativen Pfad

dependencyPath.absolutePath 

funktioniert auch nicht, weil absolutePath erstellt einen String mit Schrägstrichen, und Pfade können nicht aus Strings mit Schrägstrichen erstellt werden.

Antwort

3

Wenn Sie einfach nur das übergeordnete Projekt nicht verwalteten Classpath (dh lib -directory) zu den untergeordneten Projekten hinzufügen möchten, können Sie etwas tun:

class ParentProject(info: ProjectInfo) extends DefaultProject(info) { parent => 

    class SubProject(info: ProjectInfo) extends DefaultProject(info) { 
    override def unmanagedClasspath = 
     parent.unmanagedClasspath +++ super.unmanagedClasspath 
    } 

    val someProject = project("test", "Test", new SubProject(_)) 
} 

definieren Pfade in der ParentProject Klasse (zB mit val dirJars = descendents("dir", "*.jar")) und das Hinzufügen von ihnen zu SubProject auf die gleiche Weise wie oben funktioniert auch.

+0

danke, aber es ist nicht so einfach. Mein lib-Ordner enthält einige native Bibliotheken, die ich manuell in den Klassenpfad setzen muss. Das bedeutet, dass mein Programm ein Fork-Lauf des Projekts mit einem überschriebenen runJVMOptions sein muss. In Teilprojekten ist der Pfad nicht mehr korrekt, da sie aus einem anderen Ordner rumspielen. – Arne

+0

Es funktioniert für mich. Hier ist eine Arbeitsprojektdefinition, die Sie in der Lage sein sollten, sich an Ihr Problem anzupassen: http://gist.github.com/657060 – Moritz