我的 Play 2 应用程序是一个更大的 Maven 应用程序的子项目。 Play 2 应用程序在其父级中具有依赖项 - 它从中获取数据访问权限。因此,我希望应用程序的构建依赖于外部 Maven 项目。

基本上,我想写这个:

val main = play.Project(appName, appVersion, appDependencies).settings( 
   // settings 
).dependsOn(externalPom(baseDirectory(_ / "../pom.xml"))) 

但这当然不是有效的语法。

我试过定义我的 play.Project像这样:
val main = play.Project(appName, appVersion, appDependencies).settings( 
   externalPom(baseDirectory(_ / "../pom.xml")) 
) 

失败是因为(我认为)覆盖导致 Play 不加载自己的异常

我尝试定义一个新的 Project像这样:
lazy val data = Project("data", file(baseDirectory(_ / "..).settings( 
   externalPom(baseDirectory(_ /         "../pom.xml")) 
) 

并且取决于此,这不起作用,因为没有检测到主类。

关于如何做到这一点的任何建议?我是 SBT 的新手。

请您参考如下方法:

我成功使用 play2-maven-plugin

http://nanoko-project.github.io/maven-play2-plugin/maven/release/

使用此插件,您还可以为 play2 应用程序创建 maven 模块,并在 maven pom.xml 中定义依赖项(您的数据访问层)。该插件将确保 play 获取依赖项(它将 pom 依赖项复制到 lib 目录中的非托管依赖项中)。

使用这个插件还可以避免许多繁琐的重新构建,因为您在一个项目中拥有一切,因此您的 IDE 无需重新构建即可看到所有模块的更改。

此外,当您使用该插件时,您不会遇到从本地 maven 存储库更新快照 maven 依赖项的问题(此 sbt 错误 https://github.com/sbt/sbt/issues/321 )。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!