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



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

<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/resources/whatever会住在哪里
  • 什么是antlib,它在哪里定义

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

提前感谢!

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

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

可以,您可以导入属性文件。请参阅Ivy手册中关于多项目的信息。Ivy支持${property}语法,您可以使用Ant的<property>任务来加载Ivy可以使用的文件。如果要为Ivy定义"全局"值,也可以在ivysettings.xml中使用<property>元素。

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

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

最新更新