SBT可以只解析.pom文件作为没有jar的依赖项吗?

时间:2014-10-03 22:32:19

标签: maven sbt ivy playframework-2.2

因此,正如标题所示,可以解决仅包含配置/属性并且没有关联.jar文件的.pom文件依赖项吗?

我正在使用Play开发一个新的前端应用程序!框架和angularjs。这是场景:

  1. 根项目(la maven编译/部署)

    • 核心业务模块 - pom.xml
    • Web模块 - pom.xml

      • Rest API-pom.xml
        • 模块 - pom.xml
        • 模块 - pom.xml
      • 前端(单元SBT编译,多模块项目)

        • Mod1 - build.sbt
        • Mod2 - build.sbt(取决于mod1)
          • 更多模块 - build.sbt

        build.sbt

        项目/ build.scala

    • Web Commons(用于Rest API和前端) - pom.xml
  2. sbt编译是使用插件,sbt-launcher通过maven运行的,如果我没有弄错的话。一切都按预期运行和编译,但是,当我们在前端的build.sbt文件中添加WebCommons作为依赖项时,我们遇到了问题。 问题依赖于以下事实:root的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. innsitive()在web-commons依赖,无效,仍在尝试查找父母dep。 2. 排除(组织,文件名*),再次无效 3. excludeAll(ExclusionRule(org,dep1)ExclusionRule(org,dep2)...),遗憾的是,无效。

    我目前正在使用sbt 0.13.2 / 6(两者都试过)。 我的下一步是定义一个ivy.xml和ivysettings.xml来配置这个依赖项并强制type = pom。这项工作可能吗?还有其他任何消化/解决方法吗?

    提前致谢。

1 个答案:

答案 0 :(得分:0)

希望对你有好消息!

最近我和SBT 0.13.13有类似的问题,我有两个项目,每个项目都发布一个POM文件(没有罐子!),其中一个POM依赖于另一个。

在* .sbt文件中向POM添加依赖关系如下所示:

libraryDependencies += 
  "<org>"
  % "<artifact>" 
  % "<version pattern>" 
  artifacts
  Artifact("<artifact>", `type`="pom", extension="pom")

如果您对某个示例感兴趣,请参阅此处:

https://github.com/TIWG/com.nomagic.magicdraw.sysml.plugin/blob/release/18.0-sp6/build.sbt#L63

POM在这里发表:

https://bintray.com/tiwg/org.omg.tiwg.vendor.nomagic/com.nomagic.magicdraw.sysml.plugin/18.0-sp6.2

POM依赖于此处发布的另一个POM:

https://bintray.com/tiwg/org.omg.tiwg.vendor.nomagic/com.nomagic.magicdraw.package/18.0-sp6.2