我正在看一只 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/