Gradle在没有更改的情况下编译java源代码,但是由aopc修改的类

时间:2016-01-05 19:17:37

标签: gradle aop jboss5.x

在我的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文件上的时间戳,则不应该重新编译。我错过了什么?

1 个答案:

答案 0 :(得分:2)

这里的问题是您正在修改编译任务的输出。 Gradle检测到其输出已被"篡改"并希望重新生成它们。你有几个选择。

  1. 在' compileJava'上的doLast { }块内进行检测。任务。
  2. 将源复制到中间目录,然后对其进行检测。然后,您需要更新' jar'任务包含此代码。