我希望蚂蚁能够弄清楚什么时候不重新编译最新的文件 - 不幸的是它一直在发生。我的构建目标仅包含:
<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 / ...”目录中找到。
我该如何解决这个问题?
答案 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>