Как я могу поделиться своей папкой lib в подпроектах Simple Build Tool - PullRequest
5 голосов
/ 29 октября 2010

У меня есть проект, в котором запущен простой встроенный инструмент.Все мои подпроекты имеют одинаковые зависимости, поэтому я хочу, чтобы они использовали одну и ту же папку lib.Я мог бы сделать это, создав символические ссылки на мою общую папку lib, но я надеюсь найти в sbt конфигурацию, которая позволит мне изменить путь к моим библиотекам.

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

не работает, ".."не допускается в путях

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
    }
}

не работает, путь зависимости - это относительный путь проекта

dependencyPath.absolutePath

тоже не работает, так как absolutePath создает строку со слешами, а пути могут небыть созданным из строк с косой чертой.

1 Ответ

3 голосов
/ 30 октября 2010

Если вы просто хотите добавить неуправляемый classpath родительского проекта (то есть lib -каталог) к дочерним проектам, вы можете сделать что-то вроде этого:

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(_))
}

Определение путей в классе ParentProject(например, используя val dirJars = descendents("dir", "*.jar")) и добавляя их к SubProject так же, как описано выше, также работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...