我正在构建一个大型项目,作为构建的一部分,我在一些xml中定义了一个路径,并在导入它的另一个xml(或导入导入它的文件)中覆盖它。我注意到导入的顺序和导入文件中覆盖的路径标记的位置改变了构建的行为。但是,我找不到它背后的逻辑。导入究竟是如何工作的?由于
ant属性设置后不可更改。如果您导入了一个文件,并且该文件设置了一些属性,则在导入之后声明的与导入文件中属性同名的任何其他属性将被忽略。
假设您有一个外部文件file1.xml,它声明了一个属性foo.
file1.xml: <property name="foo" value="bar"/>
然后,在主文件中,声明属性foo的位置与导入file1.xml的位置有关。
假设你这样做了:
<import file="file1.xml"/>
<property name="foo" value="baz"/>
则属性foo
的值为bar
。另一方面,如果您这样做:
<property name="foo" value="baz"/>
<import file="file1.xml"/>
则属性foo
的值为baz
。
这个故事的寓意是,在导入声明这些属性的文件之前,先定义任何希望重写其值的属性。
ant属性任务文档见http://ant.apache.org/manual/Tasks/property.html