String dirName = rootProject.projectDir.name rootProject.name = dirName List projects = [ 'build-tools', 'build-tools:reaper', 'rest-api-spec', 'docs', 'client:rest', 'client:rest-high-level', 'client:sniffer', 'client:transport', 'client:test', 'client:client-benchmark-noop-api-plugin', 'client:benchmark', 'benchmarks', 'distribution:archives:integ-test-zip', 'distribution:archives:oss-windows-zip', 'distribution:archives:windows-zip', 'distribution:archives:oss-no-jdk-windows-zip', 'distribution:archives:no-jdk-windows-zip', 'distribution:archives:oss-darwin-tar', 'distribution:archives:darwin-tar', 'distribution:archives:oss-no-jdk-darwin-tar', 'distribution:archives:no-jdk-darwin-tar', 'distribution:archives:oss-linux-tar', 'distribution:archives:linux-tar', 'distribution:archives:oss-no-jdk-linux-tar', 'distribution:archives:no-jdk-linux-tar', 'distribution:docker', 'distribution:docker:docker-build-context', 'distribution:docker:docker-export', 'distribution:docker:oss-docker-build-context', 'distribution:docker:oss-docker-export', 'distribution:docker:ubi-docker-build-context', 'distribution:docker:ubi-docker-export', 'distribution:packages:oss-deb', 'distribution:packages:deb', 'distribution:packages:oss-no-jdk-deb', 'distribution:packages:no-jdk-deb', 'distribution:packages:oss-rpm', 'distribution:packages:rpm', 'distribution:packages:oss-no-jdk-rpm', 'distribution:packages:no-jdk-rpm', 'distribution:bwc:bugfix', 'distribution:bwc:maintenance', 'distribution:bwc:minor', 'distribution:bwc:staged', 'distribution:tools:java-version-checker', 'distribution:tools:launchers', 'distribution:tools:plugin-cli', 'server', 'server:cli', 'test:framework', 'test:fixtures:azure-fixture', 'test:fixtures:gcs-fixture', 'test:fixtures:hdfs-fixture', 'test:fixtures:krb5kdc-fixture', 'test:fixtures:minio-fixture', 'test:fixtures:old-elasticsearch', 'test:logger-usage' ] /** * Iterates over sub directories, looking for build.gradle, and adds a project if found * for that dir with the given path prefix. Note that this requires each level * of the dir hierarchy to have a build.gradle. Otherwise we would have to iterate * all files/directories in the source tree to find all projects. */ void addSubProjects(String path, File dir) { if (dir.isDirectory() == false) return; if (dir.name == 'buildSrc') return; if (new File(dir, 'build.gradle').exists() == false) return; if (findProject(dir) != null) return; final String projectName = "${path}:${dir.name}" include projectName if (path.isEmpty() || path.startsWith(':example-plugins')) { project(projectName).projectDir = dir } for (File subdir : dir.listFiles()) { addSubProjects(projectName, subdir) } } // include example plugins first, so adding plugin dirs below won't muck with :example-plugins File examplePluginsDir = new File(rootProject.projectDir, 'plugins/examples') for (File example : examplePluginsDir.listFiles()) { if (example.isDirectory() == false) continue; if (example.name.startsWith('build') || example.name.startsWith('.')) continue; addSubProjects(':example-plugins', example) } project(':example-plugins').projectDir = new File(rootProject.projectDir, 'plugins/examples') addSubProjects('', new File(rootProject.projectDir, 'libs')) addSubProjects('', new File(rootProject.projectDir, 'modules')) addSubProjects('', new File(rootProject.projectDir, 'plugins')) addSubProjects('', new File(rootProject.projectDir, 'qa')) addSubProjects('', new File(rootProject.projectDir, 'x-pack')) List startTasks = gradle.startParameter.taskNames include projects.toArray(new String[0]) project(':build-tools').projectDir = new File(rootProject.projectDir, 'buildSrc') project(':build-tools:reaper').projectDir = new File(rootProject.projectDir, 'buildSrc/reaper') project(":libs").children.each { libsProject -> libsProject.name = "elasticsearch-${libsProject.name}" } // look for extra plugins for elasticsearch File extraProjects = new File(rootProject.projectDir.parentFile, "${dirName}-extra") if (extraProjects.exists()) { for (File extraProjectDir : extraProjects.listFiles()) { addSubProjects('', extraProjectDir) } }