{"action":"created","issue":{"url":"https://api.github.com/repos/gradle/gradle/issues/1320","repository_url":"https://api.github.com/repos/gradle/gradle","labels_url":"https://api.github.com/repos/gradle/gradle/issues/1320/labels{/name}","comments_url":"https://api.github.com/repos/gradle/gradle/issues/1320/comments","events_url":"https://api.github.com/repos/gradle/gradle/issues/1320/events","html_url":"https://github.com/gradle/gradle/issues/1320","id":205219393,"number":1320,"title":"Make incremental compile efficient in the presence of Annotation Processors","user":{"login":"eriwen","id":51534,"avatar_url":"https://avatars2.githubusercontent.com/u/51534?v=4","gravatar_id":"","url":"https://api.github.com/users/eriwen","html_url":"https://github.com/eriwen","followers_url":"https://api.github.com/users/eriwen/followers","following_url":"https://api.github.com/users/eriwen/following{/other_user}","gists_url":"https://api.github.com/users/eriwen/gists{/gist_id}","starred_url":"https://api.github.com/users/eriwen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eriwen/subscriptions","organizations_url":"https://api.github.com/users/eriwen/orgs","repos_url":"https://api.github.com/users/eriwen/repos","events_url":"https://api.github.com/users/eriwen/events{/privacy}","received_events_url":"https://api.github.com/users/eriwen/received_events","type":"User","site_admin":false},"labels":[{"id":460356753,"url":"https://api.github.com/repos/gradle/gradle/labels/a:feature","name":"a:feature","color":"0e8a16","default":false},{"id":464709945,"url":"https://api.github.com/repos/gradle/gradle/labels/epic","name":"epic","color":"3E4B9E","default":false},{"id":289469033,"url":"https://api.github.com/repos/gradle/gradle/labels/from:member","name":"from:member","color":"0052cc","default":false}],"state":"open","locked":false,"assignee":{"login":"oehme","id":1191797,"avatar_url":"https://avatars2.githubusercontent.com/u/1191797?v=4","gravatar_id":"","url":"https://api.github.com/users/oehme","html_url":"https://github.com/oehme","followers_url":"https://api.github.com/users/oehme/followers","following_url":"https://api.github.com/users/oehme/following{/other_user}","gists_url":"https://api.github.com/users/oehme/gists{/gist_id}","starred_url":"https://api.github.com/users/oehme/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oehme/subscriptions","organizations_url":"https://api.github.com/users/oehme/orgs","repos_url":"https://api.github.com/users/oehme/repos","events_url":"https://api.github.com/users/oehme/events{/privacy}","received_events_url":"https://api.github.com/users/oehme/received_events","type":"User","site_admin":false},"assignees":[{"login":"oehme","id":1191797,"avatar_url":"https://avatars2.githubusercontent.com/u/1191797?v=4","gravatar_id":"","url":"https://api.github.com/users/oehme","html_url":"https://github.com/oehme","followers_url":"https://api.github.com/users/oehme/followers","following_url":"https://api.github.com/users/oehme/following{/other_user}","gists_url":"https://api.github.com/users/oehme/gists{/gist_id}","starred_url":"https://api.github.com/users/oehme/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oehme/subscriptions","organizations_url":"https://api.github.com/users/oehme/orgs","repos_url":"https://api.github.com/users/oehme/repos","events_url":"https://api.github.com/users/oehme/events{/privacy}","received_events_url":"https://api.github.com/users/oehme/received_events","type":"User","site_admin":false}],"milestone":null,"comments":65,"created_at":"2017-02-03T17:27:07Z","updated_at":"2018-05-29T15:29:55Z","closed_at":null,"author_association":"MEMBER","body":"Migrated from [GRADLE-3259](https://issues.gradle.org/browse/GRADLE-3259) which had 19 votes\r\n\r\nCompile avoidance was [introduced in Gradle 3.4](https://docs.gradle.org/3.4/release-notes.html#compile-avoidance-in-the-presence-of-annotation-processors) (<= Users please read this). One can improve performance somewhat by separate annotation processors from the compile classpath. \r\n\r\n### Expected Behavior\r\nIncremental Java compilation should avoid full rebuild when annotation processors are present. \r\n\r\n### Current Behavior\r\nCurrently we fall back to a full recompile when annotation processors are used. The reason for this is that we don't know which source files they need as an input. The APT API allows processor to access other source files then the one containing the annotation being processed.\r\n\r\n### Context\r\nWe could instrument the compiler to find out which files the annotation processors are actually reading and use this information to run them incrementally as well.\r\n\r\nIn cases where an annotation processor is taking the whole source tree as an input, we could warn the user (e.g. in build scans) that this is causing slower builds. Many developers might not even be aware of the trade-off between \"saving time writing code\" and \"saving time running the build\" they have to make.\r\n\r\n### Design Spec\r\n\r\nSince this is a bigger feature, you can download the [design spec](https://github.com/gradle/gradle/files/1659294/Incremental.Annotation.Processing.-.Public.Copy.pdf) as a PDF.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/gradle/gradle/issues/comments/392820748","html_url":"https://github.com/gradle/gradle/issues/1320#issuecomment-392820748","issue_url":"https://api.github.com/repos/gradle/gradle/issues/1320","id":392820748,"user":{"login":"ducrohet","id":3945493,"avatar_url":"https://avatars3.githubusercontent.com/u/3945493?v=4","gravatar_id":"","url":"https://api.github.com/users/ducrohet","html_url":"https://github.com/ducrohet","followers_url":"https://api.github.com/users/ducrohet/followers","following_url":"https://api.github.com/users/ducrohet/following{/other_user}","gists_url":"https://api.github.com/users/ducrohet/gists{/gist_id}","starred_url":"https://api.github.com/users/ducrohet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ducrohet/subscriptions","organizations_url":"https://api.github.com/users/ducrohet/orgs","repos_url":"https://api.github.com/users/ducrohet/repos","events_url":"https://api.github.com/users/ducrohet/events{/privacy}","received_events_url":"https://api.github.com/users/ducrohet/received_events","type":"User","site_admin":false},"created_at":"2018-05-29T15:29:55Z","updated_at":"2018-05-29T15:29:55Z","author_association":"CONTRIBUTOR","body":"It looks like previously this disabled inc java on both android-apt and retrolambda. Probably a remnant of a time when the java compile task didn't automatically disable inc compilation if annotation processor was one."}}
{"actor":{"display_login":"ducrohet"}}