maven - 让 Play/SBT 应用程序依赖于 Maven POM

标签 maven playframework-2.0 sbt

我的 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/

相关文章:

java - 在 Heroku 上部署 Java + Groovy 混合代码时出错

java - 从 MySQL 5.5 升级到 5.6 并获取 "SQLException: Connection is closed"

java - Play框架打包源文件

scala - 分析 sbt 构建

bash - 如何在命令行上从 sbt-dynver 获取版本?

java - Datanucleus 增强器不适用于 appengine

java - Maven - 如何在两个相互依赖的项目中使用不同的版本依赖关系

Eclipse 显示错误,即使 maven 构建成功

scala - Play 2.0 Scala 框架中的计时页面渲染

heroku - 如何使用 Scala 2.10 在 heroku 上运行喷射服务器?