当前位置: 首页 > 知识库问答 >
问题:

使用Ant和Ivy仅保留最新的依赖项快照

宗政鸿志
2023-03-14

我使用蚂蚁来构建我的项目,使用常春藤来解决它的依赖关系。我的项目有一个依赖关系,它将快照发布到我的内部艺术工厂服务器。

如果依赖项发布了新的快照,并且我执行

依赖关系快照的名称类似于depproject-1.0.0 23。jar其中23是内部版本号。它的发布地址如下http://artifactory.example.com/example-snapshots-local/com.example/depproject/1.0-SNAPSHOT/depproject-1.0.023.5罐。这不是Maven存储库,它被配置为存储唯一的快照。

我是常春藤的新手。这是预期的行为吗?如何配置Ivy或Ant,以便只保留最新的依赖项快照?

ivysettings。xml

<?xml version="1.0" encoding="UTF-8"?>
<ivy-settings>
    <settings defaultResolver="main" />
    <resolvers>
        <chain name="main">
            <ibiblio
                name="artifactory-example-snapshots"
                m2compatible="false"
                root="http://artifactory.example.com/example-snapshots-local/"
                pattern="[organization]/[module]/1.0-SNAPSHOT/[artifact]-[revision](-[classifier]).[ext]" />
            <!-- more repos listed -->
        </chain>
    </resolvers>
</ivy-settings>

常春藤。xml

<ivy-module version="2.0">
    <info organisation="com.example" module="myproject" />
    <dependencies>
        <dependency org="com.example" name="depproject" rev="latest.integration" />
    </dependencies>
</ivy-module>

共有1个答案

郎羽
2023-03-14

我假设您正在使用lib目录中的jar创建一个类路径,类似于:

<path id="compile.path">
  <fileset dir="lib" includes="*.jar"/>
</path>

你的问题是多个罐子包含相同的类?

我认为你有两个选择:

  1. 使用ivy cachepath任务管理生成类路径
  2. 清除lib目录,使用检索任务重新填充最新的jar

第一种选择可能看起来更复杂,但实际上它是一种非常有效的使用常春藤的方法。有关示例,请参见:

  • 如何避免使用Ivy复制依赖关系
 类似资料:
  • 更新:简化我的问题-我有一个模块mod1,它被用作模块MOD2中的依赖项。我希望确保mod2始终使用mod1的最新版本快照。如何在Maven中实现这一点? 但是,这总是解析到发布版本1.0,而从不解析到1.1-快照,它在本地回购中。如何确保使用最新的快照?如果有任何建议,我将不胜感激。

  • 使用公共存储库和 Apache Ant 共享其他项目的源代码 管理项目和工具之间的源代码依赖项往往非常困难,但并不一定总是如此。在这一期“ 让开发自动化”中,自动化专家 Parl Duvall 介绍了如何利用 Apache Ant 项目中的 Ivy 依赖项管理器来处理所有重要 Java 项目必须管理的无数依赖项。 实际上,所有软件开发项目都必须依靠来自其他项目的源代码。例如,许多项目可能依靠 lo

  • 我在我的build.xml中创建了一个taskdef,它依赖于驻留在Ivy导入的jar中的类。 我想了解这是否可能,因为我的构建在开始之前会中断,因为它找不到 taskdef 的类。 这似乎是一个鸡蛋和鸡肉的问题,因为我不能得到这个类,因为我必须首先解决我的依赖关系(这需要构建工作)。

  • 我给ivy添加了一个依赖项(我们称之为a)。在maven central中具有pom文件的xml。Ivy使用ibiblio来解析maven依赖项。添加到常春藤中的依赖项(A)。xml具有可传递依赖项(B)。到目前为止,一切都很好。传递依赖(B)的依赖(C)不能用常春藤来解决。 我在常春藤上定义了一个新的名字。如下所示的xml: 在B的pom文件中,C在编译和测试范围中定义如下: 当我在ivy的缓存

  • 问题内容: iText的最新版本是什么?那么,对Maven的依赖是什么? 问题答案: 您需要注意iText的Java版本的许可证: iText :iText Group NV在&许可下使用groupId; 的最新 正式 版本。 iText :ymasory / InProTopia 的最新 非官方 版本,在&许可下具有groupId; iText 及更高版本:由iText Group NV根据许可

  • 我正在使用pom常春藤任务来生成一个Pom文件,以便发布到伪像。除了一个问题之外,这非常有效。由于命名空间与我们的 Ivy 配置一起使用,因此 pom 文件中的依赖项不是原始的 maven 组 Id/工件 Id,而是命名空间派生的名称。这会导致使用此 pom 的 maven 项目在解析依赖项时失败。 例如: 在 ivy.xml 文件中,我们将具有如下依赖项: ivysettings.xml中有以下