当前,我们使用以下方式定义路径
<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的源中排除原始源文件而又不产生大量费用?
答案 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的默认搜索机制。