在 Ant javac 模式集中使用 If 条件

Using If condition in Ant javac patternset

我想排除一些要编译的包,如果 属性 是对还是错。下面是我的 ant 脚本,但出现错误:

<javac srcdir="src;src-generated" destdir="classes" debug="true" encoding="utf-8">

        <if>
            <equals arg1="${compile.csv}" arg2="false"/> 
            <then>
  <exclude name="${csv.package}"/>
      <exclude name="${excel.package}"/>
            </then>
            </if>

javac 不支持嵌套的 "if" 元素。

提前感谢您的回答。

编辑:

我在 ant 构建配置的属性选项卡中定义了 属性 csv.plugin.disabled。

  <property name="csv.package" value="com/service/transfer/impl/**"/>
  <property name="excel.package" value="com/service/transfer/excel/impl/**"/>


        <javac srcdir="src;src-generated" destdir="classes" debug="true" encoding="utf-8">


      <exclude name="${csv.package}" if="${csv.plugin.disabled}"/>
          <exclude name="${excel.package}" if="${csv.plugin.disabled}"/>

我仍然将这些包包含在 类 文件夹中。

尝试嵌套 src 元素 - 您可以在其中使用复杂的类路径结构(完整信息请参阅 Javac Task):

<src>
                <fileset dir="src" >
                    <exclude name="${csv.package}" if="${compile.csv}" />
                    <exclude name="${excel.package}" if="${csv.plugin.disabled}"/>
                </fileset>
                <fileset dir="src-generated" >
                    <exclude name="${csv.package}" if="${compile.csv}" />
                    <exclude name="${excel.package}" if="${csv.plugin.disabled}"/>
                </fileset>
</src>

javac 任务可以采用条件 include/exclude 元素。来自 documentation:

This task forms an implicit FileSet and supports most attributes of <fileset> (dir becomes srcdir) as well as the nested <include>, <exclude> and <patternset> elements.

<javac srcdir="src;src-generated" destdir="classes" debug="true" encoding="utf-8">
    <exclude name="${csv.package}" unless="${compile.csv}" />
    <exclude name="${excel.package}" unless="${compile.csv}" />
</javac>