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>

Теперь мы создаем некоторые модифицированные .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 ответ

Вам нужен промежуточный шаг, который вы копируете все ваши исходные файлы в новое место и перезаписываете их сгенерированными, а затем используете это новое местоположение как исходную папку для 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 отключение механизма поиска по умолчанию в javac, как предлагается здесь.

Другие вопросы по тегам