Apache Ivy:XML命名空间和导入的属性

时间:2012-03-07 18:00:27

标签: java ant build ivy

我今天早上看了一个Ant build.xml文件,注意到根<project>元素中有一个XML namspace delcaration:

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

我认为这个XML命名空间是这样的,所有在整个构建文件中散布的常春藤任务都知道要查找哪些资源用于任务定义(<ivy:configure><ivy:resolve>等),但是希望对该陈述的语法有更全面的解释。

  • Ant世界中“命名空间”的概念是什么?此xmlns:ivy=属性是否指向JAR?
  • org.apache.ivy.ant JAR /资源/生活在哪里?
  • 什么是antlib以及它在哪里定义?

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

提前致谢!

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

我只有一个部分答案,我希望有人可以验证它:

  • 命名空间:我不确定。我认为它只是一个XML命名空间。
  • resources:在后端,Ant运行Java程序。 Ant“可执行文件”(实际上只是* NIX上的.sh脚本和Win上的.bat文件)在运行时构建它。
  • antlib:是$ ANT_HOME / lib的路径。它是在运行时构建的,就像类路径一样。
  • 常春藤属性文件:是的,您可以使用属性文件(至少使用Eclipse的IvyDE插件)。我只知道这一点,因为我们将它们放在工作中,我并不完全了解它们如何工作的机制。