【发布时间】:2014-10-24 01:31:03
【问题描述】:
目前我正在构建一个连接到 hadoop jobtracker 的 Play 项目(v2.2.3),这意味着我需要使用 hadoop lib jars 构建它
当我使用 hadoop 1.x 时它工作正常
现在我的项目想要同时支持 hadoop1.x 和 hadoop2.x。但是由于 h1 和 h2 提供了不同的 lib jar,我想分别使用两组依赖项(hadoop1.x 和 hadoop 2.x)构建我的 Play 项目,并生成两个可分别在 h1 和 h2 上运行的可部署 zip。
在探索各种方法时,我找到了最接近的一种: 在 build.sbt 中,我创建了两个具有相同根目录(即项目的根目录)的子项目,例如:
lazy val h2 = Project("h2",file(".")).settings(
version := "h2",
libraryDependencies += "some hadoop2 dependency"
)
lazy val h1 = Project("h1",file(".")).settings(
version := "h1",
libraryDependencies += "some hadoop1 dependency"
)
但这会在 exec "play compile" 时出错:
overlapping output directories : proj_root/target
我尝试通过更改输出目录来解决它,例如:
lazy val h1 = Project("h1",file(".")).settings(
version := "h1",
libraryDependencies += "some hadoop1 dependency"
target in Compile := file("some_my_own_dir"),
)
但它不起作用。我无法更改我的项目的输出目录,并且错误消息保持不变。
因此,关于同时构建具有两组不同依赖项的项目的任何建议(或按照我/用户的指示选择一组进行构建),以便我/用户不必手动编辑 build.sbt ?或者对我更改播放项目输出目录的暂定解决方案有什么建议?
我已经被这个问题困扰了好几天,并且为此而发疯。感谢您的帮助!
【问题讨论】:
标签: playframework playframework-2.0 dependencies sbt playframework-2.2