scala – 困惑如何设置多项目sbt项目
我在这里使用sbt .13
我到现在为止 import sbt._ import Keys._ import play.Project._ object ApplicationBuild extends Build { val appVersion = "1.0" resolvers += "local maven" at "/Users/blankman/.m2/repository/" val commonDependencies = Seq() val modelDependencies = Seq( "com.typesafe.slick" %% "slick" % "2.0.1","org.slf4j" % "slf4j-nop" % "1.6.4" ) val serviceDependencies = Seq( "com.typesafe.slick" %% "slick" % "2.0.1","org.slf4j" % "slf4j-nop" % "1.6.4" ) val webDependencies = Seq( //"org.apache.tomcat" % "tomcat-jdbc" % "8.0.3","mysql" % "mysql-connector-java" % "5.1.30","com.typesafe.slick" %% "slick" % "2.0.1" ) lazy val common = Project( id = "app-common",base = file("app-common"),dependencies = commonDependencies ) lazy val models = Project( id = "app-models",base = file("app-models"),settings(modelDependencies: _*) ) ).dependsOn(common) lazy val services = Project( id = "app-services",base = file("app-services"),settings = Seq( libraryDependencies ++= serviceDependencies ) ).dependsOn(models,common) lazy val web = play.Project("app-web",appVersion,webDependencies,path = file("app-web")) .settings(playScalaSettings: _*) .dependsOn(services) } 这不行,例如,如果我进入: 项目应用模型 并尝试编译,它说编译是无效的。 我真的很困惑如何设置一个项目,什么是正确的方法? 看这个幻灯片#10这里http://jsuereth.com/scala/2013/06/11/effective-sbt.html它说我可以做: lazy val web = ( Project("app-models",file("app-models")) settings( libraryDependencies += modelDependencies ) ) 但是当我这样做时,我也会收到一个错误。 我基本上在sbt里面有几个项目: common models services web (which is play) >型号取决于公共 有人能帮我把这个工作吗? 解决方法
在您的构建定义中,我发现了一些问题,但是由于您购买了Josh的
Effective sbt演讲,所以我认为我们应该把整个猪肉的风格。
有效的sbt 这是文件。 项目/ build.properties sbt.version=0.13.2 项目/ play.sbt val playVersion = "2.2.2" resolvers += Resolver.typesafeRepo("releases") addSbtPlugin("com.typesafe.play" % "sbt-plugin" % playVersion) 项目/ commons.scala import sbt._ import Keys._ object Commons { val appVersion = "1.0" val settings: Seq[Def.Setting[_]] = Seq( version := appVersion,resolvers += Opts.resolver.mavenLocalFile ) } 项目/ dependencies.scala import sbt._ import Keys._ object Dependencies { val slickVersion = "2.0.1" val slick = "com.typesafe.slick" %% "slick" % slickVersion val slf4jVersion = "1.6.4" val slf4jNop = "org.slf4j" % "slf4j-nop" % slf4jVersion val mysqlConnectorVersion = "5.1.30" val mysqlConnector = "mysql" % "mysql-connector-java" % mysqlConnectorVersion val commonDependencies: Seq[ModuleID] = Seq( slick,slf4jNop ) val modelDependencies: Seq[ModuleID] = Seq() val serviceDependencies: Seq[ModuleID] = Seq() val webDependencies: Seq[ModuleID] = Seq( mysqlConnector ) } build.sbt import play.Project._ import Dependencies._ lazy val appCommon = (project in file("app-common")). settings(Commons.settings: _*). settings( libraryDependencies ++= commonDependencies ) lazy val appModels = (project in file("app-models")). settings(Commons.settings: _*). settings( libraryDependencies ++= modelDependencies ). dependsOn(appCommon) lazy val appServices = (project in file("app-services")). settings(Commons.settings: _*). settings( libraryDependencies ++= serviceDependencies ). dependsOn(appModels,appCommon) lazy val appWeb = (project in file("app-web")). settings(Commons.settings: _*). settings(playScalaSettings: _*). dependsOn(appServices) 笔记 设置参数vs设置方法 对于模型和服务,您将设置顺序传递到Project(…)构造函数中,因此可能未加载默认设置。您可以手动传递默认设置,也可以在Project上使用设置(…)方法,我建议您使用。 lazy val appModels = (project in file("app-models")). settings( libraryDependencies ++= modelDependencies ). dependsOn(appCommon) 乔希用括号使用后缀符号,但是我更喜欢使用点符号表示法,所以这个说法略有偏离。 libraryDependencies = 如上面的例子,你必须将modelDependencies传递给libraryDependencies。你把它直接拨入设置。 解析器 解析器设置不会传递到任何东西,这可能是不正确的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |