2010-01-27 3 views
0

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

<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 

, но они существуют и доступны в «/ бла/строить/ком/бла/конфигурации/.. . ".

Как это исправить?

+1

См http://stackoverflow.com/questions/ 827609/why-do-ant-compile-all-classes-each-run –

+0

Спасибо. Да - эта ссылка также разрешила мои проблемы. – viraptor

ответ

1

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

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

package com.stackoverflow.ant.error; 

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

0

Был этот же путающий вопрос.

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

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

Если ваш код в/бэ/сборки/ком/бла/конфигурации/... попробуйте

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

или

<javac destdir="${build_env}"> 
    <src path="blah/"/> 
    ... 
</javac> 
Смежные вопросы