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

如何使用依赖于ivy导入的lib的Ant taskdef

江宏伟
2023-03-14

我在我的build.xml中创建了一个taskdef,它依赖于驻留在Ivy导入的jar中的类。

我想了解这是否可能,因为我的构建在开始之前会中断,因为它找不到 taskdef 的类。

这似乎是一个鸡蛋和鸡肉的问题,因为我不能得到这个类,因为我必须首先解决我的依赖关系(这需要构建工作)。

共有3个答案

司徒修能
2023-03-14

只是记录我的解决方案,以防万一它可能帮助任何人。像大卫的答案那样干净利落地做这件事可能是正确的方法,但以防万一你需要快速的解决方案......

1)将任务def移动到要调用的宏内,而不是将其定义在外面。这将避免它被评估并且构建立即中断。

2)将您的依赖项解析添加为包含对宏调用的任务的依赖项。

景麒
2023-03-14

下面是一个使用ivy检索groovy任务依赖关系的例子。正如David所说,诀窍是在ivy解析了依赖项并创建了路径引用之后调用taskdef:

  • 常春藤刺耳

下面是更普通的构建示例

  • 使用蚂蚁将雅各布集成到声纳中

我创建配置以匹配我需要的构建类路径。请特别注意“构建”配置的映射。这就是如何将与 ANT 任务关联的 jar 与用于编译的 jar 分开。

对你的鸡和蛋评论做出反应。

我使用ivy来管理所有的构建依赖项。以下目标确保ivy安装在我的构建机器上。

<available classname="org.apache.ivy.Main" property="ivy.installed"/>

<target name="install-ivy" description="Install ivy" unless="ivy.installed">
    <mkdir dir="${user.home}/.ant/lib"/>
    <get dest="${user.home}/.ant/lib/ivy.jar" src="http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.3.0/ivy-2.3.0.jar"/>
    <fail message="Ivy has been installed. Run the build again"/>
</target>
夏侯枫
2023-03-14

是的,这是可能的。但是,这意味着您必须在< code >之前解析和检索jar

>

  • 将这三个目标放在各自的目标中,然后使依赖于第三方jar的目标依赖于检索常春藤jar并定义任务的目标。这对于像Ant-Contrib任务这样的几乎所有任务都可能使用的任务来说可能很困难,但对于像在构建过程的最后使用的某种打包任务这样的任务来说应该会更容易。

  •  类似资料:
    • 问题内容: 我在build.xml中创建了一个taskdef,它依赖于一个由Ivy导入的jar中驻留的类。 考虑到我的构建在启动之前就中断了,因为它找不到taskdef的类,所以我想了解是否有可能。 这似乎是一个鸡蛋和鸡肉的问题,因为我不能上课,因为我必须先解决我的依赖关系(这需要构建起作用)。 问题答案: 是的,有可能。但是,这意味着您必须在执行该任务之前解析和检索jar 。有两种方法可以做到这

    • 问题内容: 我的目标是将项目传递依赖项划分为几个不交叉的集合: 系统(j2ee容器中已经存在的jar;以明确的固定版本手动列出) 提供(将jar复制到j2ee容器;手动列出) 耳朵(jar包装在耳朵/耳塞里,其余) 我下面列出的当前解决方案有一些缺点: 必须逐一从耳朵会议中排除系统和提供的库 尚未明确排除的新的第三方传递性部门可能会意外出现 有时必须添加显式复制的库名称和版本 有什么办法可以消除这

    • 问题内容: 所以快速的背景是我正在创建一个Java程序,该程序使用许多不同的导入 我知道Netbeans找不到这些文件,因为我的计算机上没有这些文件。但是有没有办法让Netbeans自动与org.apache连接并检索这些文件?还是我只需要去下载它们。有人建议使用Maven,但是我不确定这是否是正确的解决方案,或者如何解决? 谢谢 问题答案: 除非您使用Maven结构(请参见此处,Maven入门)

    • 添加Lib库依赖关系有两种方式: 非管理依赖方式,是通过将依赖的Jar包放到项目的lib目录 管理依赖方式,是在工程构建配置中配置依赖关系,sbt会自动从托管代码库中下载依赖库 非管理依赖方式 很多人用管理依赖的方式替代非管理方式,其实非管理方式用起来非常方便。非管理依赖方式的工作原理就是将jar包放到lib目录下,sbt会自动的将其添加到classpath中。也可以将一些测试依赖放到lib目录下

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

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