ANT:忽略javac源代码中的某些文件



目前,我们定义了一个路径

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

然后使用

<javac ...>
   <src refid="sources.production"/>
   <classpath refid="classpath.production">
</javac>

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

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

不幸的是,编译现在失败了,因为原始文件和修改后的.java文件都被馈送到了javac任务。如何在不收取大笔费用的情况下轻松地从javac的源代码中排除原始源文件?

您需要一个中间步骤,将所有源文件复制到新位置并用生成的文件覆盖它们,然后将此新位置用作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>

或者,您可以指定一个文件集来javac禁用 Java 的缺省搜索机制,如此处的建议。

相关内容

  • 没有找到相关文章

最新更新