问题描述
|
我有2个名为\“ build \”和\“ tarne \”的蚂蚁构建脚本
建立:
<?xml version=\"1.0\" ?>
<project name=\"build\" default=\"zip\">
<property name=\"project.name\" value=\"projectName\"/>
<property name=\"version\" value=\"default_version_value\"/>
<taskdef resource=\"net/sf/antcontrib/antcontrib.properties\">
<classpath>
<pathelement location=\"lib/build/ant-contrib.jar\"/>
</classpath>
</taskdef>
<var name=\"version2\" value=\"default_version_value\"/>
<property name=\"tmp\" value=\"tmp\"/>
<property name=\"build.dir\" location=\"${tmp}/component/${project.name}\"/>
<property name=\"java.classes\" location=\"${tmp}/component/${project.name}/classes\"/>
<property name=\"weblayout.dir\" location=\"${tmp}/weblayout/resources/${project.name}\"/>
<path id=\"compile.classpath\">
<fileset dir=\"lib\" includes=\"**/*.jar\" />
<fileset dir=\"lib/build\" includes=\"*.zip\" />
</path>
<target name=\"clean\">
<delete dir=\"${tmp}\" />
</target>
<target name=\"init\" depends=\"clean\">
<mkdir dir=\"${java.classes}\" />
</target>
<target name=\"compile\" depends=\"init\">
<javac srcdir=\"src\" source=\"1.5\" target=\"1.5\" encoding=\"utf-8\" includes=\"**/*.java\" destdir=\"${java.classes}\" classpathref=\"compile.classpath\" />
</target>
<target name=\"copy-resources\" depends=\"compile\">
//Lots of copying here
</target>
<target name=\"read.version\" description=\"Parses the hda file for your version number\">
<property file=\"${project.name}.hda\" prefix=\"hda\"/>
<propertyregex property=\"version\" input=\"${hda.version}\" regexp=\"\\.\" replace=\"-\" global=\"true\" override=\"true\"/>
<var name=\"version2\" value=\"${version}\"/>
<echo>${version}</echo>
<echo>${version2}</echo>
</target>
<target name=\"zip\" depends=\"copy-resources,read.version\" description=\"Package component\">
<zip destfile=\"${project.name}-${version}.zip\" basedir=\"${tmp}\" />
<delete dir=\"${tmp}\" />
</target>
</project>
塔恩:
<?xml version=\"1.0\" ?>
<project default=\"tarne\">
<include file=\"build.xml\"/>
<property name=\"project.name\" value=\"build.project.name\"/>
<target name=\"tarne\">
<antcall target=\"build.read.version\" inheritRefs=\"true\"></antcall>
<property name=\"version\" value=\"build.version\"/>
<property name=\"version2\" value=\"build.version2\"/>
<echo>${version}</echo>
<echo>${version2}</echo>
</target>
</project>
运行tarne.xml时得到的输出是:
Buildfile: tarne.xml
tarne:
build.read.version:
[echo] v1-0-1
[echo] v1-0-1
[echo] default_version_value
[echo] default_version_value
前两行(v1-0-1)来自build.xml的read.version目标内部,后两行来自tarne.xml。通常的想法是,我应该能够在tarne.xml构建脚本中访问版本号。
关于出什么问题有什么想法吗?
解决方法
Antcall不支持您打算做的事情:
http://ant.apache.org/manual/Tasks/antcall.html:
被调用的目标在新项目中运行;请注意,这意味着被调用目标设置的属性,引用等不会持久化回调用项目。
您可以尝试:
<target name=\"tarne\" depends=\"build.read.version\">
</target>
这将保持新的价值。
,尝试
<property name=\"version\" value=\"${build.version}\"/>
<property name=\"version2\" value=\"${build.version2}\"/>