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

问题描述 投票:0回答:3
java ant build ivy
3个回答
2
投票

就 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>
元素。


0
投票

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

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

0
投票

对我来说,修复

build.xml
<ivy:resolve>
<ivy:retrieve>
等的语法错误的方法是删除 URL 并将其替换为
xmlns:m="antlib:org.apache.ivy.ant"

build.xml

<project name="proj" default="dist" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
    <taskdef uri="antlib:org.apache.ivy.ant" resource="org/apache/ivy/ant/antlib.xml">
        <!-- ... -->
    </taskdef>
    <!-- ... -->
</project>

ivy.xml

<ivy-module version="2.0" xmlns:m="antlib:org.apache.ivy.ant">
    <info organisation="org" module="proj"/>
    <dependencies>
        <!-- ... -->
    </dependencies>
</ivy-module>
© www.soinside.com 2019 - 2024. All rights reserved.