Wie teile ich meine Ordner lib in Teilprojekte von Simple Build-Tool
Frage
habe ich ein Projekt läuft einfach aufgebaut Werkzeug als Werkzeug zu bauen. Alle meine Teilprojekte die gleichen Abhängigkeiten gemeinsam nutzen, so dass ich ihnen die gleiche lib Ordner verwenden möchten. Ich kann dies tun, indem symbolische Links zu meinen gemeinsamen lib Ordnern zu erstellen, aber ich hoffe, eine Konfiguration in sbt zu finden, die ich ändere Weg meiner Bibliotheken können.
override def dependencyPath = ".." / "lib"
nicht funktioniert, ".." ist in Pfaden nicht erlaubt
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, dependencyPath ist ein Projekt relativer Pfad
dependencyPath.absolutePath
funktioniert auch nicht, weil AbsolutePath einen String mit Schrägstrichen erzeugt und Pfade nicht von Strings mit Schrägstrichen erstellt werden.
Lösung
Wenn Sie einfach nur das übergeordnete Projekt nicht verwalteten Classpath hinzufügen möchten (d lib
-Verzeichnis) auf die untergeordneten Projekte, die Sie so etwas tun kann:
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 von Pfaden in der ParentProject
Klasse (zum Beispiel val dirJars = descendents("dir", "*.jar")
verwendet wird) und das Hinzufügen von ihnen die gleichen Art und Weise SubProject
wie oben auch funktioniert.