微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ant build script issue

如何解决ant build script issue

| 我有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}\"/> 
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。