【发布时间】:2014-11-29 00:38:30
【问题描述】:
那么,正如标题所暗示的,sbtresolve 可以解决仅包含配置/属性且没有关联 .jar 文件的 .pom 文件依赖项吗?
我目前正在使用 Play 开发一个新的前端应用程序!框架和 angularjs。场景如下:
-
根项目(à la maven 编译/部署)
- 核心业务模块 - pom.xml
-
Web 模块 - pom.xml
- 休息API-pom.xml
- 模块 - pom.xml
- 模块 - pom.xml
-
前端(à la SBT 编译,多模块项目)
- Mod1 - build.sbt
- Mod2 - build.sbt(取决于 mod1)
- 内部有更多模块 - build.sbt
build.sbt
项目/build.scala
- 休息API-pom.xml
- Web Commons(用于 Rest API 和前端)- pom.xml
sbt 编译是通过 maven 使用插件运行的,如果我没记错的话,是 sbt-launcher。一切都按预期运行和编译,但是,当我们在前端的 build.sbt 文件中添加 WebCommons 作为依赖项时遇到了问题。 问题取决于这样一个事实,即根的 pom.xml 有他自己的父级,我们称之为 X,并且 X 包含几个委托给子模块(在本例中为根项目)的 .pom 文件 config/properties/dependencies这是简化 RPM 打包所必需的。 运行 maven clean install,编译过程非常顺利,我们到达前端,sbt 编译周期按预期开始。当 sbt 尝试解析 web-commons 依赖时,它也会解析每个父级。在这种情况下,web-commons->web-modules->root->X。当他到达 X 时,发现他有几个依赖项(与前端完全无关......)但这些是由 .pom 文件而不是 jar 文件组成的。这些 .pom 文件是使用解析器正确下载的,但是随后,sbt 搜索相应的 .jar 文件需要花费大量时间来完成构建,并且当它这样做时,到处都是错误、错误(缺少依赖项)。 我尝试了几种可能的解决方案:
1.intransitive() 在 web-commons 依赖中,无效,仍在尝试寻找父母 dep。
2.exclude(organization,filename*),同样无效。
3.excludeAll(ExclusionRule(org,dep1) ExclusionRule(org,dep2) ... ),可惜没有效果。
我目前正在使用 sbt 0.13.2/6(两种都试过了)。 我的下一步是定义配置此依赖项并强制 type=pom 的 ivy.xml 和 ivysettings.xml。这行得通吗?还有其他建议/解决方法吗?
提前致谢。
【问题讨论】:
标签: maven sbt ivy playframework-2.2