Comment puis-je partager mon dossier lib dans les sous-projets d'outil simple Build

StackOverflow https://stackoverflow.com/questions/4054035

  •  27-09-2019
  •  | 
  •  

Question

J'ai un outil intégré simple, en cours d'exécution du projet comme outil de construction. Tous mes sous-projets partagent les mêmes dépendances, donc je veux qu'ils utilisent le même dossier lib. Je pouvais le faire en créant des liens symboliques vers mon dossier lib partagé, mais j'espère trouver une configuration SBT qui me permet de changer de chemin de mes bibliothèques.

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

ne fonctionne pas, ".." est pas autorisé dans les chemins

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

ne fonctionne pas, dependencyPath est un projet chemin relatif

dependencyPath.absolutePath

ne fonctionne pas non plus, parce que AbsolutePath crée une chaîne avec des barres obliques, et les chemins ne peut être créé à partir de chaînes avec des barres obliques.

Était-ce utile?

La solution

Si vous voulez simplement ajouter le classpath non géré de projet parent (à savoir lib-répertoire) aux projets enfants que vous pouvez faire quelque chose comme ceci:

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

Définition des chemins dans la classe ParentProject (par exemple en utilisant val dirJars = descendents("dir", "*.jar")) et les ajouter à SubProject de la même façon que ci-dessus fonctionne également.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top