2011-04-14 174 views
1

我有2个Ant构建脚本命名为 “构建” 和 “tarne”Ant构建脚本问题

体形:

<?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> 

Tarne:

<?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 

那里杉木st 2行(v1-0-1)来自build.xml的read.version目标,接下来的两行来自tarne.xml。总的想法是我应该能够在我的tarne.xml构建脚本中访问版本号。

关于发生什么问题的任何想法?

回答

2

Antcall不支持你打算做什么:

http://ant.apache.org/manual/Tasks/antcall.html: 被叫目标(S)的一个新项目运行;请注意,这意味着被调用目标设置的属性,引用等不会保留回调用项目。

你可以尝试:

<target name="tarne" depends="build.read.version"> 
    </target> 

这将保留新值。

+0

工作正常,但是Eclipse正在向我发送消息“Target build.read.version在此项目中不存在”(它运行正常,只是Eclipse无法在导入时找到目标)消息。任何关于如何获得传球的想法? – Peeter 2011-04-14 08:56:36

+1

depends =“read.version”应该是正确的,因为您导入build.xml – oers 2011-04-14 08:59:51

0

尝试

<property name="version" value="${build.version}"/>   
<property name="version2" value="${build.version2}"/>