【问题标题】:Apache Ivy: XML Namespace and Imported PropertiesApache Ivy:XML 命名空间和导入的属性
【发布时间】:2012-03-25 06:57:55
【问题描述】:

今天早上我正在查看 Ant build.xml 文件,并注意到根 <project> 元素中的 XML namspace 声明:

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

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

  • Ant 世界中的“命名空间”是什么概念?这个 xmlns:ivy= 属性是否指向 JAR?
  • org.apache.ivy.antJAR/resources/whatever 会在哪里?
  • 什么是antlib,它在哪里定义?

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

提前致谢!

【问题讨论】:

    标签: java ant build ivy


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-09-29
        • 2014-06-15
        • 1970-01-01
        • 1970-01-01
        • 2011-03-05
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        • 2013-06-05
        相关资源
        最近更新 更多