ANT:忽略来自Javac来源的某些文件

时间:2019-01-23 11:38:20

标签: java ant generated-code

当前,我们使用以下方式定义路径

<path id="sources.production">
  <pathelement path="src/module1"/>
  <pathelement path="src/module2"/>
  ...
</path>

然后使用

进行编译
<javac ...>
   <src refid="sources.production"/>
   <classpath refid="classpath.production">
</javac>

现在,我们在此.java调用之前创建一些修改后的src/module2文件(<javac>中的原始文件),并将它们放在其他源文件之前:

<path id="sources.production">
  <pathelement path="generated-sources"/>
  <pathelement path="src/module1"/>
  <pathelement path="src/module2"/>
  ...
</path>

不幸的是,现在编译失败,因为原始文件和修改后的.java文件都被馈给了javac任务。如何轻松地从javac的源中排除原始源文件而又不产生大量费用?

1 个答案:

答案 0 :(得分:1)

您需要一个中间步骤,将所有源文件复制到一个新位置,并用生成的文件覆盖它们,然后将该新位置用作javac的源文件夹。

它可能看起来像这样:

<path id="sources.4compile" location="all-sources" />

<target name="prepare-4compile">

    <!-- clean -->
    <delete dir="all-sources"/>
    <mkdir dir="all-sources"/>

    <copy todir="all-sources">
        <fileset dir="src/module1"/>
        <fileset dir="src/module2"/>
        <fileset dir="generated-sources"/>
    </copy>

</target>

<target name="compile" depends="prepare-4compile">
    <javac ...>
       <src refid="sources.4compile" /> 
       <classpath refid="classpath.production" />
    </javac>
</target>

以其他方式,您可以根据建议here将文件集指定为javac来禁用javac的默认搜索机制。