我在reading the snippet on the include vs import task之后的理解是,使用import
会覆盖目标的功能,并且使用include
意味着您必须使用目标的预先版本来获取包含的版本的行为。我的最终目标不一定是目标,而是从另一个build.xml文件导入/包含属性值。我创建了这两个build.xml文件,试图说明它是如何工作的。包含文件而不覆盖属性变量
我的第一个,dog.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project name="dog">
<include as="corgi" file="corgi.xml" />
<property name="breed" value="mutt" />
<property name ="bark" value="woof"/>
<target name="nameit">
<echo>This dog is a ${breed}</echo>
</target>
<target name="startBarking">
<echo>${bark}, ${bark}, ${bark}!</echo>
</target>
</project>
,我想包括的build.xml,corgi.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project name="corgi">
<property name="breed" value="corgi" />
<property name="bark" value="bow-wow" />
<target name="nameit">
<echo>This dog is a ${breed}</echo>
</target>
<target name="startBarking">
<echo>${bark}, ${bark}, ${bark}!</echo>
</target>
</project>
由于我使用的是包括,当我运行属于dog.xml的目标时,我希望得到一个“mutof”,但是corgi.xml覆盖了这个文件,并且我得到一个“corgi”,它表示“bow-wow “不管我是否使用include
或import
。这里发生了什么,以及如何包含corgi.xml文件,同时仍然可以访问dog.xml的属性?