{"action":"created","issue":{"url":"https://api.github.com/repos/elastic/elasticsearch/issues/13930","labels_url":"https://api.github.com/repos/elastic/elasticsearch/issues/13930/labels{/name}","comments_url":"https://api.github.com/repos/elastic/elasticsearch/issues/13930/comments","events_url":"https://api.github.com/repos/elastic/elasticsearch/issues/13930/events","html_url":"https://github.com/elastic/elasticsearch/issues/13930","id":109752898,"number":13930,"title":"Switch to gradle build system","user":{"login":"rjernst","id":289412,"avatar_url":"https://avatars.githubusercontent.com/u/289412?v=3","gravatar_id":"","url":"https://api.github.com/users/rjernst","html_url":"https://github.com/rjernst","followers_url":"https://api.github.com/users/rjernst/followers","following_url":"https://api.github.com/users/rjernst/following{/other_user}","gists_url":"https://api.github.com/users/rjernst/gists{/gist_id}","starred_url":"https://api.github.com/users/rjernst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rjernst/subscriptions","organizations_url":"https://api.github.com/users/rjernst/orgs","repos_url":"https://api.github.com/users/rjernst/repos","events_url":"https://api.github.com/users/rjernst/events{/privacy}","received_events_url":"https://api.github.com/users/rjernst/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/elastic/elasticsearch/labels/adoptme","name":"adoptme","color":"207de5"},{"url":"https://api.github.com/repos/elastic/elasticsearch/labels/build","name":"build","color":"5319e7"},{"url":"https://api.github.com/repos/elastic/elasticsearch/labels/Meta","name":"Meta","color":"e11d21"},{"url":"https://api.github.com/repos/elastic/elasticsearch/labels/v2.2.0","name":"v2.2.0","color":"dddddd"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":10,"created_at":"2015-10-05T08:40:08Z","updated_at":"2015-10-21T20:36:57Z","closed_at":null,"body":"We currently have a very large maven build system, comprising of 6k lines of xml. While maven parent POMs have been very useful in de-duplicating build logic across elasticsearch and plugins, the rigidity of maven has required us to begin implementing most of our test logic through `maven-antrun-plugin`. Another major problem with multi-module builds is trap: building a module requires explicitly listing an upstream module in order to get a local build of the dependency, or building from a higher level module (which implicitly builds all sub-modules). And finally, the maven model is incapable of decoupling test dependencies from main dependencies, in that tests for module A, cannot depend on module B, which in turn depends on module A (this is *not* a cycle).\r\n\r\nI have a branch which contains elasticsearch switched to using gradle:\r\nhttps://github.com/elastic/elasticsearch/tree/burn_maven_with_fire\r\n\r\nThis is a tracking issue for completing the migration to gradle. The tasks are separated into two groups: those remaining required before pushing to master (as to not completely break development), and those required for the migration to be complete, which must happen before the next release (tentatively 2.2).\r\n\r\nRequired for master push:\r\n- [x] Maven publishing\r\n- [x] Windows integ test support\r\n- [x] Setup publishing of buildSrc (ie ES gradle build plugins)\r\n- [x] Publish \"attach project plugin\" (allows dynamically including a multi-project build inside another build)\r\n\r\nRequired for release:\r\n- [ ] Copyright header check\r\n- [ ] Vagrant qa tests\r\n- [ ] Multi node qa tests\r\n- [ ] Rpm/deb building complete\r\n- [ ] Rpm signing\r\n- [ ] Distribution tests\r\n- [ ] Update plugins not in elasticsearch repo to use ES gradle build plugins\r\n- [ ] Document new ES gradle build plugins (for ES plugin authors)\r\n- [ ] Document building/testing in README/TESTING (this is done, except for instructions for vagrant tests and jacoco reports)\r\n- [ ] jps check in integ tests for still running old integ test or ES process\r\n\r\nAddtional nice to haves:\r\n- [ ] Make qa plugins work in eclipse (need to configure custom classpath)\r\n- [ ] Add `run` task for elasticsearch and plugins to replace `run.sh`/`run.bat`"},"comment":{"url":"https://api.github.com/repos/elastic/elasticsearch/issues/comments/150017349","html_url":"https://github.com/elastic/elasticsearch/issues/13930#issuecomment-150017349","issue_url":"https://api.github.com/repos/elastic/elasticsearch/issues/13930","id":150017349,"user":{"login":"mrsolo","id":96771,"avatar_url":"https://avatars.githubusercontent.com/u/96771?v=3","gravatar_id":"","url":"https://api.github.com/users/mrsolo","html_url":"https://github.com/mrsolo","followers_url":"https://api.github.com/users/mrsolo/followers","following_url":"https://api.github.com/users/mrsolo/following{/other_user}","gists_url":"https://api.github.com/users/mrsolo/gists{/gist_id}","starred_url":"https://api.github.com/users/mrsolo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mrsolo/subscriptions","organizations_url":"https://api.github.com/users/mrsolo/orgs","repos_url":"https://api.github.com/users/mrsolo/repos","events_url":"https://api.github.com/users/mrsolo/events{/privacy}","received_events_url":"https://api.github.com/users/mrsolo/received_events","type":"User","site_admin":false},"created_at":"2015-10-21T20:36:57Z","updated_at":"2015-10-21T20:36:57Z","body":"Since 2.x, the licenses are managed in https://github.com/elastic/elasticsearch/tree/2.1/distribution/licenses and some if not all libraries are not shaded, this pretty much invalidate pre 2.x auditing workflo, gradle 3rd party dependencies therefore is nice to have but not necessary.\r\n\r\nAuditing will be\r\n1) Cross check content of distribution *.zip against information under distribution/licenses\r\n2) Generate information for external consumption"}}