https://github.com/jasongoodwin/play21-multimodule-demo有代码。 我在3个不同的项目中重新创建了这个问题。我不知道发生了什么事。 一旦你将aggregate和dependsOn放在build.scala文件中,项目在尝试开始播放时就会抛出错误。
[info]从/Users/jgoodwin/.sbt/plugins [info]加载全局插件 从中加载项目定义 /用户/ jgoodwin /开发/ src目录/ ninjakeyboard /测试/ tmp目录/ play21,多模块,演示/项目 [error] java.lang.ExceptionInInitializerError [error]使用'last'表示 完整的日志。项目加载失败:(r)etry,(q)uit,(l)ast,或 (忽视? q
构建文件
import sbt._ import Keys._ import play.Project ._
对象ApplicationBuild扩展Build {
val appName =“multimodule-demo”val appVersion = “1.0-SNAPSHOT”// val scalaVersion =“2.10.0”
val appDependencies = Seq( //在这里添加项目依赖项, JDBC, anorm)
val buildSettings =( scalaVersion:=“2.10.0” )
val main = play.Project(appName,appVersion,appDependencies,path = 文件( “网”))。设置( //在这里添加你自己的项目设置).aggregate(testmodule).dependsOn(testmodule)
val testmodule = Project( “testmodule” 文件( “testmodlue”), settings = buildSettings)
}
答案 0 :(得分:3)
我在你的github build.scala中注意到,在主模块之后声明(并初始化)了testmodule,因此在项目加载期间出现了null异常。 我犯了同样的错误,按正确的顺序放置模块使其工作。 我刚刚开始玩Play2和Scala,但我相信使用懒惰的val也可以帮助。
答案 1 :(得分:1)
尝试创建一个新项目:
play new MyApp
play clean eclipse
modules
(在MyApp内)play new MyModule
play clean eclipse
play clean publish-local
"mymodule" % "mymodule_2.10" % "1.0-SNAPSHOT"
play dependencies eclipse
瞧,你有你的子模块,请参阅我的github:https://github.com/adis-me/PlayModuleExample
只需运行play run
并访问主要项目:http://localhost:9000
,然后访问子模块:http://localhost:9000/module
。
对于你,我认为这应该可以解决问题!
编辑:2013-03-27
将上述配置更改为实际子项目设置,请按照下列步骤操作:
play clean
对象ApplicationBuild扩展Build {
val appName = "MyAppp"
val appVersion = "1.0-SNAPSHOT"
val appDependencies = Seq(
// Add your project dependencies here,
javaCore,
javaJdbc,
javaEbean
)
val subproject = play.Project(
"sub-project", appVersion, appDependencies, path = file("modules/MyModule")
)
val main = play.Project(appName, appVersion, appDependencies).settings(
// Add your own project settings here
).dependsOn(subproject).aggregate(subproject)
}
play clean eclipse
play run
就是这样,你不能访问上面提到的相同网址。 可能是您的想法无法识别子项目中的类,只需将MyModule项目作为主项目的引用库引用,您就可以了。
祝你好运!