settings.gradle 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import org.elasticsearch.gradle.Version
  2. String dirName = rootProject.projectDir.name
  3. rootProject.name = dirName
  4. List projects = [
  5. 'build-tools',
  6. 'rest-api-spec',
  7. 'docs',
  8. 'client:rest',
  9. 'client:rest-high-level',
  10. 'client:sniffer',
  11. 'client:transport',
  12. 'client:test',
  13. 'client:client-benchmark-noop-api-plugin',
  14. 'client:benchmark',
  15. 'benchmarks',
  16. 'distribution:archives:integ-test-zip',
  17. 'distribution:archives:oss-zip',
  18. 'distribution:archives:zip',
  19. 'distribution:archives:oss-tar',
  20. 'distribution:archives:tar',
  21. 'distribution:packages:oss-deb',
  22. 'distribution:packages:deb',
  23. 'distribution:packages:oss-rpm',
  24. 'distribution:packages:rpm',
  25. 'distribution:bwc:next-minor-snapshot',
  26. 'distribution:bwc:staged-minor-snapshot',
  27. 'distribution:bwc:next-bugfix-snapshot',
  28. 'distribution:bwc:maintenance-bugfix-snapshot',
  29. 'distribution:tools:launchers',
  30. 'distribution:tools:plugin-cli',
  31. 'server',
  32. 'server:cli',
  33. 'test:framework',
  34. 'test:fixtures:example-fixture',
  35. 'test:fixtures:hdfs-fixture',
  36. 'test:fixtures:krb5kdc-fixture',
  37. 'test:fixtures:old-elasticsearch',
  38. 'test:logger-usage'
  39. ]
  40. /**
  41. * Iterates over sub directories, looking for build.gradle, and adds a project if found
  42. * for that dir with the given path prefix. Note that this requires each level
  43. * of the dir hierarchy to have a build.gradle. Otherwise we would have to iterate
  44. * all files/directories in the source tree to find all projects.
  45. */
  46. void addSubProjects(String path, File dir) {
  47. if (dir.isDirectory() == false) return;
  48. if (dir.name == 'buildSrc') return;
  49. if (new File(dir, 'build.gradle').exists() == false) return;
  50. if (findProject(dir) != null) return;
  51. final String projectName = "${path}:${dir.name}"
  52. include projectName
  53. if (path.isEmpty() || path.startsWith(':example-plugins')) {
  54. project(projectName).projectDir = dir
  55. }
  56. for (File subdir : dir.listFiles()) {
  57. addSubProjects(projectName, subdir)
  58. }
  59. }
  60. // include example plugins first, so adding plugin dirs below won't muck with :example-plugins
  61. File examplePluginsDir = new File(rootProject.projectDir, 'plugins/examples')
  62. for (File example : examplePluginsDir.listFiles()) {
  63. if (example.isDirectory() == false) continue;
  64. if (example.name.startsWith('build') || example.name.startsWith('.')) continue;
  65. addSubProjects(':example-plugins', example)
  66. }
  67. project(':example-plugins').projectDir = new File(rootProject.projectDir, 'plugins/examples')
  68. addSubProjects('', new File(rootProject.projectDir, 'libs'))
  69. addSubProjects('', new File(rootProject.projectDir, 'modules'))
  70. addSubProjects('', new File(rootProject.projectDir, 'plugins'))
  71. addSubProjects('', new File(rootProject.projectDir, 'qa'))
  72. addSubProjects('', new File(rootProject.projectDir, 'x-pack'))
  73. boolean isEclipse = System.getProperty("eclipse.launcher") != null || gradle.startParameter.taskNames.contains('eclipse') || gradle.startParameter.taskNames.contains('cleanEclipse')
  74. if (isEclipse) {
  75. // eclipse cannot handle an intermediate dependency between main and test, so we must create separate projects
  76. // for server-src and server-tests
  77. projects << 'server-tests'
  78. projects << 'libs:elasticsearch-core-tests'
  79. projects << 'libs:elasticsearch-nio-tests'
  80. projects << 'libs:x-content-tests'
  81. projects << 'libs:secure-sm-tests'
  82. projects << 'libs:grok-tests'
  83. }
  84. include projects.toArray(new String[0])
  85. project(':build-tools').projectDir = new File(rootProject.projectDir, 'buildSrc')
  86. if (isEclipse) {
  87. project(":server").projectDir = new File(rootProject.projectDir, 'server/src/main')
  88. project(":server").buildFileName = 'eclipse-build.gradle'
  89. project(":server-tests").projectDir = new File(rootProject.projectDir, 'server/src/test')
  90. project(":server-tests").buildFileName = 'eclipse-build.gradle'
  91. project(":libs:elasticsearch-core").projectDir = new File(rootProject.projectDir, 'libs/elasticsearch-core/src/main')
  92. project(":libs:elasticsearch-core").buildFileName = 'eclipse-build.gradle'
  93. project(":libs:elasticsearch-core-tests").projectDir = new File(rootProject.projectDir, 'libs/elasticsearch-core/src/test')
  94. project(":libs:elasticsearch-core-tests").buildFileName = 'eclipse-build.gradle'
  95. project(":libs:elasticsearch-nio").projectDir = new File(rootProject.projectDir, 'libs/elasticsearch-nio/src/main')
  96. project(":libs:elasticsearch-nio").buildFileName = 'eclipse-build.gradle'
  97. project(":libs:elasticsearch-nio-tests").projectDir = new File(rootProject.projectDir, 'libs/elasticsearch-nio/src/test')
  98. project(":libs:elasticsearch-nio-tests").buildFileName = 'eclipse-build.gradle'
  99. project(":libs:x-content").projectDir = new File(rootProject.projectDir, 'libs/x-content/src/main')
  100. project(":libs:x-content").buildFileName = 'eclipse-build.gradle'
  101. project(":libs:x-content-tests").projectDir = new File(rootProject.projectDir, 'libs/x-content/src/test')
  102. project(":libs:x-content-tests").buildFileName = 'eclipse-build.gradle'
  103. project(":libs:secure-sm").projectDir = new File(rootProject.projectDir, 'libs/secure-sm/src/main')
  104. project(":libs:secure-sm").buildFileName = 'eclipse-build.gradle'
  105. project(":libs:secure-sm-tests").projectDir = new File(rootProject.projectDir, 'libs/secure-sm/src/test')
  106. project(":libs:secure-sm-tests").buildFileName = 'eclipse-build.gradle'
  107. project(":libs:grok").projectDir = new File(rootProject.projectDir, 'libs/grok/src/main')
  108. project(":libs:grok").buildFileName = 'eclipse-build.gradle'
  109. project(":libs:grok-tests").projectDir = new File(rootProject.projectDir, 'libs/grok/src/test')
  110. project(":libs:grok-tests").buildFileName = 'eclipse-build.gradle'
  111. }
  112. // look for extra plugins for elasticsearch
  113. File extraProjects = new File(rootProject.projectDir.parentFile, "${dirName}-extra")
  114. if (extraProjects.exists()) {
  115. for (File extraProjectDir : extraProjects.listFiles()) {
  116. addSubProjects('', extraProjectDir)
  117. }
  118. }