在我的gradle项目中,我将我的java源代码编译为生成的类,然后运行一个自定义任务来修改使用JBoss aopc的类来修改类的交叉功能(方面),如性能监视等。
由于某些奇怪的原因,在后续的汇编任务中,这会导致编译java源,即使它们的输入java源文件都没有更改。更改的是.class文件,用于为方面检测的一些源文件。
gradle调试说:
Executing task ':project1:compilePlafSrcJava' (up-to-date check took 1.998 secs) due to:
Output file /pkg1/Class1.class has changed.
Output file /pkg1/Class2.class has changed.
Output file /pkg1/Class3.class has changed.
All input files are considered out-of-date for incremental task ':project1:compilePlafSrcJava'.
注意3个类是由javac生成后由jboss aopc检测的类。
似乎如果类上的时间戳晚于相应.java文件上的时间戳,则不应该重新编译。我错过了什么?
答案 0 :(得分:2)
这里的问题是您正在修改编译任务的输出。 Gradle检测到其输出已被"篡改"并希望重新生成它们。你有几个选择。
doLast { }
块内进行检测。任务。