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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top