我的 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 )。
关于maven - 让 Play/SBT 应用程序依赖于 Maven POM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16179671/