ant + javac +属性

时间:2010-07-05 15:44:41

标签: ant

在ant脚本中,我只想编译某些包,例如

com.example.some_package.foo
com.example.some_package.bar

这是我想要做的事情,但它似乎不起作用,因为属性替换似乎不适用于<include>标记:

<property name="ROOT_PKG_PATH" location="com/example/some_package"/>

   ...

<target name="compile-client" depends="init">
    <javac srcdir="${srcDir}"
           destdir="${buildDir}"
           debug="on"
           target="1.5"
           classpathref="build.classpath">
        <include name="${ROOT_PKG_PATH}/foo/**" />
        <include name="${ROOT_PKG_PATH}/bar/**" />
    </javac>       
</target>

如何在不必重新键入每个包的整个包路径的情况下解决这个问题?

1 个答案:

答案 0 :(得分:1)

使用属性上的属性,而不是位置

 <property name="ROOT_PKG_PATH" value="com/example/some_package"/>

实施例

我能够有条件地编译我的一个java类:

./src/some_package/demo1/Demo.java
./src/some_package/demo2/Demo.java
./build/classes/somepackage/demo1/Demo.class
./build.xml

使用以下ANT文件:

<project name="demo" default="compile">

    <property name="prop" value="some_package/demo1"/>

    <target name="compile">
        <mkdir dir="build/classes"/>

        <javac srcdir="src" destdir="build/classes">
            <include name="${prop}/**"/>
        </javac>
    </target>
</project>