муравей продолжает перекомпилировать

Я ожидал, что муравей выяснит, когда не перекомпилировать обновленные файлы - к сожалению, это продолжается. Моя цель сборки содержит только:

<javac srcdir="configuration" destdir="${build_env}">
  <compilerarg value="-Xlint"/>
</javac>

В подробном выводе муравья я получаю:

conf:
[javac] MissingConfigurationException.java added as MissingConfigurationException.class doesn't exist.
[javac] TestConfiguration.java added as TestConfiguration.class doesn't exist.
[javac] TestConfigurationStorage.java added as TestConfigurationStorage.class doesn't exist.
[javac] Compiling 3 source files to /blah/build

но они существуют и доступны в каталоге "/blah/build/com/blah/configuration/...".

Как я могу это исправить?


person viraptor    schedule 27.01.2010    source источник
comment
См. stackoverflow.com /вопросы/827609/   -  person Dana the Sane    schedule 27.01.2010
comment
Спасибо. Да, эта ссылка также решила мои проблемы.   -  person viraptor    schedule 28.01.2010


Ответы (2)


Я видел это в прошлом, когда класс определялся в месте, которое отличается от пакета, который был объявлен в файле .java.

Например, если мы смотрим на файл в com/stackoverflow/ant/error с именем AJavaFile.java. Лучше определить пакет как:

package com.stackoverflow.ant.error;

или компилятор javac поместит его в другое место, чем ожидается в объявлении пакета.

person Matt    schedule 27.01.2010

Была такая же непонятная проблема.

Вы должны попробовать основу пути к местоположению ваших файлов, откуда запускается ant, а не только относительный каталог внутри него.

javac, похоже, не справляется с попыткой правильно определить пакеты, когда они не совсем совпадают с пакетами в вашей «сборке», начиная с того, как вы их указали. И поэтому он просто компилирует все в этих случаях. Это имеет смысл, если подумать, несмотря на некоторые недостатки. Пути в том, что уже было построено, должны точно соответствовать тому, что должно быть скомпилировано. Он просто не может заглянуть вперед и разрешить полные пути, если ему не сказано начинать с того же базового каталога, который записан в каталоге «сборки».

Если ваш код находится в /blah/build/com/blah/configuration/..., попробуйте

<javac srcdir="/blah/" destdir="${build_env}">
  ...
</javac>

or

<javac destdir="${build_env}">
  <src path="blah/"/>
  ...
</javac>
person laseray    schedule 26.01.2013