我今天早上看了一个Ant build.xml
文件,注意到根<project>
元素中有一个XML namspace delcaration:
<project name="${project.name}" xmlns:ivy="antlib:org.apache.ivy.ant">
我认为这个XML命名空间是这样的,所有在整个构建文件中散布的常春藤任务都知道要查找哪些资源用于任务定义(<ivy:configure>
,<ivy:resolve>
等),但是希望对该陈述的语法有更全面的解释。
xmlns:ivy=
属性是否指向JAR?org.apache.ivy.ant
JAR /资源/生活在哪里?antlib
以及它在哪里定义?此外,这里只是一个稍纵即逝的想法,常春藤文件(ivy.xml
)是否能够导入属性文件并使用其属性值?我查看了常春藤文档,但找不到任何导入类型语句的引用。
提前致谢!
答案 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)
我只有一个部分答案,我希望有人可以验证它: