【问题标题】:managing revisions in ivy across projects跨项目管理 ivy 中的修订
【发布时间】:2015-03-12 21:40:27
【问题描述】:

我习惯于 maven 构建,并且通常在父 pom 文件(或公司父 pom)dependencyManagement 部分中定义库版本。所以更新次要版本只是一个文件的编辑和部署。

现在我必须处理 ant/ivy 并管理多个具有大量模块的项目,这些模块通常应该共享相同的库/依赖版本,但需要能够在需要时覆盖它们。

我读到了 ivy 中的 extends mechanism(如提到的 here),但这会将所有依赖项添加到子项中,而不仅仅是它的版本。

使用 open revision definitions 也无济于事,因为我需要维护所有项目的不同分支,这些分支不得超过特定版本。

我希望你们中的一些有经验的 ivy 用户可以告诉我 ivy 是否能够做到这一点,或者你如何管理这项任务。

【问题讨论】:

  • 另一个常春藤特性是动态修订。据我所知,Maven 不支持。见:ant.apache.org/ivy/history/latest-milestone/ivyfile/…
  • @MarkO'Connor 我稍后发现了这个问题并且已经在上面喜欢它,但是提到的扩展功能不允许继承依赖版本,而只能继承完整的依赖,因为它被添加到“孩子”ivy.xml,这不是我想要的。这就像我在 Maven 中定义父依赖项而不是依赖项管理一样。
  • @MarkO'Connor 动态修订对我没有帮助,因为我必须维护每个项目的至少 3 个使用不同依赖项版本的分支。最新的方法仅适用于主干。这就是我所说的“开放修订定义”。
  • 我不喜欢 Maven 中的父子关系,所以我同样怀疑 ivy 中的“扩展”功能。我的建议是使用 ivysettings 文件中定义的属性。

标签: maven ant version ivy dependency-management


【解决方案1】:

就像@MarkO'Connor 的linked answer 中提到的那样,似乎属性是要走的路。

这是一个有关如何处理这些属性的相关问题/答案(同样来自 @MarkO'Connor)

https://stackoverflow.com/a/3079655/1756183

所以我会将一个通用的 version.properties 文件与已经通用的 ivysettings.xml 一起分发给所有项目。这样,默认 ref 将使用版本属性占位符填充,并且可以根据需要使用特定版本覆盖。

它不像 maven 的 dependencyManagement 那样迷人(我可以省略版本),但我没有看到其他解决方案,是吗?

【讨论】:

    猜你喜欢
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 2020-02-20
    • 2011-04-14
    相关资源
    最近更新 更多