scala – 如何设置SBT中所有子项目的默认依赖项?
发布时间:2020-12-16 19:10:43 所属栏目:安全 来源:网络整理
导读:尝试了解如何设置SBT subprojects.为所有子项目设置默认依赖关系的正确方法是什么? 我尝试过这个,但我的子项目并没有拿到任何依赖项(他们下载得很好). import sbt._class MyProjects(info: ProjectInfo) extends DefaultProject(info){ val projA = project
尝试了解如何设置SBT
subprojects.为所有子项目设置默认依赖关系的正确方法是什么?
我尝试过这个,但我的子项目并没有拿到任何依赖项(他们下载得很好). import sbt._ class MyProjects(info: ProjectInfo) extends DefaultProject(info) { val projA = project("projA","ProjectA") val projB = project("projB","ProjectB") val akkaRepo = "Akka maven2 repo" at "http://www.scalablesolutions.se/akka/repository/" val multiverseRepo = "Multiverse maven2 repo" at "http://multiverse.googlecode.com/svn/maven-repository/releases/" val guiceyFruitRepo = "GuiceyFruit Maven2 repo" at "http://guiceyfruit.googlecode.com/svn/repo/releases/" val jBossRepo = "JBoss maven2 repo" at "https://repository.jboss.org/nexus/content/groups/public/" val junit = "junit" % "junit" % "4.5" % "test" val scalatest = "org.scalatest" % "scalatest" % "1.2" % "test" val akka = "se.scalablesolutions.akka" % "akka-core_2.8.0" % "0.10" } 然后,根据this,我尝试了以下.它的工作,但这不是我期待着要做的.是否更简单的是为所有子项目设置默认依赖项? import sbt._ class MyProjects(info: ProjectInfo) extends DefaultProject(info) { val projA = project("projA","ProjectA",new Proj(_)) val projB = project("projB","ProjectB",new Proj(_)) val akkaRepo = "Akka maven2 repo" at "http://www.scalablesolutions.se/akka/repository/" val multiversRepo = "Multiverse maven2 repo" at "http://multiverse.googlecode.com/svn/maven-repository/releases/" val guiceyFruitRepo = "GuiceyFruit Maven2 repo" at "http://guiceyfruit.googlecode.com/svn/repo/releases/" val jBossRepo = "JBoss maven2 repo" at "https://repository.jboss.org/nexus/content/groups/public/" class Proj(info:ProjectInfo) extends DefaultProject(info){ val junit = "junit" % "junit" % "4.5" % "test" val scalatest = "org.scalatest" % "scalatest" % "1.2" % "test" val akka = "se.scalablesolutions.akka" % "akka-core_2.8.0" % "0.10" } } 编辑:应该指出有一个better way使用Akka,但只是说明了我的观点. 解决方法
使用继承和混合:
import sbt._ class ModularProject(info: ProjectInfo) extends DefaultProject(info){ lazy val childProject = project("projA",new DefaultProject(_) with Repositories with GlobalDependencies with AkkaDependencies) trait Repositories{ lazy val akkaRepo = "Akka maven2 repo" at "http://www.scalablesolutions.se/akka/repository/" lazy val multiversRepo = "Multiverse maven2 repo" at "http://multiverse.googlecode.com/svn/maven-repository/releases/" lazy val guiceyFruitRepo = "GuiceyFruit Maven2 repo" at "http://guiceyfruit.googlecode.com/svn/repo/releases/" lazy val jBossRepo = "JBoss maven2 repo" at "https://repository.jboss.org/nexus/content/groups/public/" } trait GlobalDependencies{ lazy val junit = "junit" % "junit" % "4.5" % "test" lazy val scalatest = "org.scalatest" % "scalatest" % "1.2" % "test" } trait AkkaDependencies{ lazy val akka = "se.scalablesolutions.akka" % "akka-core_2.8.0" % "0.10" } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |