【问题标题】:Can SBT resolve only .pom files as dependencies without jars?SBT 可以仅将 .pom 文件解析为没有 jar 的依赖项吗?
【发布时间】:2014-11-29 00:38:30
【问题描述】:

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

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

  1. 根项目(à 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

    • 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


    【解决方案1】:

    希望对您来说是个好消息!

    我最近在使用 SBT 0.13.13 时遇到了类似的问题,我有两个项目,每个项目都发布一个 POM 文件(没有 jars!),其中一个 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

    【讨论】:

      猜你喜欢
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      • 2012-05-13
      • 2020-01-24
      相关资源
      最近更新 更多