目前我建立一个连接到Hadoop的JobTracker的一个游戏项目(V2.2.3),这意味着我需要用Hadoop的lib罐子构建它的编译/构建项目播放框架/ SBT:有两套分别依赖
当我使用hadoop 1.x工作正常
现在我的项目想要同时支持hadoop1.x和hadoop2.x。但是当h1和h2给出不同的lib jar时,我想分别用两组依赖关系(hadoop1.x和hadoop 2.x)构建我的Play项目,并生成两个可部署的zip,分别可以在h1和h2上运行。
当我正在探索各种方式,我发现最近的一个: 在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"
)
但是当高管“打纂”这给出了一个错误:
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"),
)
但它不起作用。我无法更改我的项目的输出目录,并且错误消息保持不变。
因此,关于在同一时间使用两个不同的依赖关系构建项目的任何建议(或选择一个以I /用户指示构建的集合),以便我/用户不必手动编辑构建。 SBT?或者对我的试验性解决方案有任何改变播放项目输出目录的建议?
我一直在这个问题上停留了好几天,并且为此疯狂起来。感谢帮助!
感谢您的帮助!我试了一下,它很好地解决了我们的问题:) @James Roper – user2457766 2014-09-02 18:28:55
在游戏2.2.3中,我可以使用“play -Dhadoop.version = 1 dist” – user2457766 2014-09-02 18:31:57