蚂蚁不断重新编译

时间:2010-01-27 18:23:46

标签: java ant build

我希望蚂蚁能够弄清楚什么时候不重新编译最新的文件 - 不幸的是它一直在发生。我的构建目标仅包含:

<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 / ...”目录中找到。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我在过去看到这个类的位置与.java文件中声明的包不同。

例如,如果我们在com / stackoverflow / ant / error中查看名为AJavaFile.java的文件。最好将包定义为:

package com.stackoverflow.ant.error;

或者javac编译器将它放在与包声明所期望的不同的地方。

答案 1 :(得分:0)

有同样令人困惑的问题。

你应该尝试从运行ant的文件位置的路径的基础,而不仅仅是在其中的相对目录。

javac似乎在尝试正确确定软件包时遇到问题,因为它们与您的“构建”中的软件包完全不匹配,从您指定它们的方式开始。所以它只是编译那些情况下的一切。如果你考虑它,这种情况是有道理的,尽管它显示出一些缺点。已经构建的路径需要准确匹配要编译的内容。当没有被告知从写入“build”目录的同一基本目录开始时,它无法向前看并解析完整路径。

如果您的代码位于/ blah / build / com / blah / configuration / ...,请尝试

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

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