如何使用Ant concat任务动态地将Java文件创建到某个包中



我有一个Ant脚本文件,其中我使用concat任务在属性文件中定义的指定包中创建Java源文件。

例如,我定义了包名:
ma.package=com.my.package

Ant脚本,我调用:

<concat destfile="./${prject.root}/${ma.package}/MyClass.java">

但是,MyClass.java创建在子文件夹com.my.package中,而不是文件夹结构commypackage中。如何解决这个问题?

我在Windows XP下使用Eclipse Helios

您可以使用PathConvert和嵌套的UnpackageMapper来将包名转换为路径。例如:

<project default="test">
  <property name="ma.package" value="com.my.package"/>
  <target name="test">
    <pathconvert property="ma.package.dir">
      <path path="${ma.package}"/>
      <unpackagemapper from="*" to="*"/>
    </pathconvert>
    <echo message="ma.package : ${ma.package}"/>
    <echo message="ma.package.dir : ${ma.package.dir}"/>
  </target>
</project>

输出为:

Buildfile: C:tmpantbuild.xml
test:
 [echo] ma.package : com.my.package
 [echo] ma.package.dir : C:tmpantcommypackage

所以你可以在concat中使用转换后的属性值:

<concat destfile="${ma.package.dir}/MyClass.java">

相关内容

  • 没有找到相关文章

最新更新