java - Apache Ivy : XML Namespace and Imported Properties

标签 java ant build ivy

我正在看一只 Ant build.xml今天早上查看文件,注意到根目录中有一个 XML 命名空间声明 <project>元素:

<project name="${project.name}" xmlns:ivy="antlib:org.apache.ivy.ant">

我认为这个 XML 命名空间是为了让散布在构建脚本中的所有 Ivy 任务都知道要在哪个资源中查找任务定义( <ivy:configure><ivy:resolve> 等),但希望得到更彻底的解释该语句的语法。

  • Ant 世界中“命名空间”的概念是什么?这是xmlns:ivy=属性指向 JAR?
  • 这会在哪里 org.apache.ivy.ant JAR/资源/任何活着的东西?
  • 什么是antlib它是在哪里定义的?

此外,这里只是一个短暂的想法,Ivy 文件( ivy.xml )是否能够导入属性文件并使用其属性值?我查看了 Ivy 文档,但找不到任何导入类型语句的引用。

提前致谢!

最佳答案

就 XML 而言,命名空间与任何其他命名空间一样。但是,Ant 正在使用 antlib:作为一个 URL 方案来知道它应该寻找 org/apache.ivy/antlib.xml类路径中的文件。请参阅antlib输入 Ant 手册。

由于它正在寻找类路径,因此 antlib.xml 可以位于类加载器可以找到它的任何位置。默认设置是将必要的 jar 文件放在 <ant install>/lib 中目录。您还可以使用 -lib 启动 ant指定不同的目录或仅设置 CLASSPATH (不推荐)。

是的,您可以导入属性文件。请参阅 Ivy 手册信息 multi-projects 。 Ivy 支持${property}语法,您可以使用 Ant 的 <property>加载 Ivy 可以使用的文件的任务。您还可以使用<property>如果您想为 Ivy 定义“全局”值,请使用 ivysettings.xml 中的元素。

关于java - Apache Ivy : XML Namespace and Imported Properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9606719/

相关文章:

java - 类型转换加载类

ant - ANT 脚本中的 XJC 任务显示为 "Use Class Customization"

java - Ant 与 jar 目标

build - Netlify - 我的构建可执行文件的权限被拒绝

mysql - 如何禁用使用 cmake 的第三方库 (mysql) 的共享对象 (.so) 的生成

ant - 在不失败的情况下停止ant脚本

java - Coldfusion/Java - 在与服务器不同的时区获取当前时间

java - 为什么 UIComponentBase 类不公开 setAttribute() 方法?

java - Jax Ws 与 PHP 客户端始终发送 Null parm

java - 构建包含所有依赖项的 JAR