import org.elasticsearch.gradle.Version String dirName = rootProject.projectDir.name rootProject.name = dirName List projects = [ 'build-tools', '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-zip', 'distribution:archives:zip', 'distribution:archives:oss-tar', 'distribution:archives:tar', 'distribution:docker', 'distribution:packages:oss-deb', 'distribution:packages:deb', 'distribution:packages:oss-rpm', 'distribution:packages: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:hdfs-fixture', 'test:fixtures:krb5kdc-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 boolean isEclipse = System.getProperty("eclipse.launcher") != null || // Detects gradle launched from the Eclipse IDE System.getProperty("eclipse.application") != null || // Detects gradle launched from the Eclipse compiler server startTasks.contains("eclipse") || // Detects gradle launched from the command line to do Eclipse stuff startTasks.contains("cleanEclipse"); if (isEclipse) { // eclipse cannot handle an intermediate dependency between main and test, so we must create separate projects // for server-src and server-tests projects << 'server-tests' projects << 'libs:core-tests' projects << 'libs:dissect-tests' projects << 'libs:nio-tests' projects << 'libs:x-content-tests' projects << 'libs:secure-sm-tests' projects << 'libs:grok-tests' projects << 'libs:geo-tests' projects << 'libs:ssl-config' } include projects.toArray(new String[0]) project(':build-tools').projectDir = new File(rootProject.projectDir, 'buildSrc') if (isEclipse) { project(":server").projectDir = new File(rootProject.projectDir, 'server/src/main') project(":server").buildFileName = 'eclipse-build.gradle' project(":server-tests").projectDir = new File(rootProject.projectDir, 'server/src/test') project(":server-tests").buildFileName = 'eclipse-build.gradle' project(":libs:core").projectDir = new File(rootProject.projectDir, 'libs/core/src/main') project(":libs:core").buildFileName = 'eclipse-build.gradle' project(":libs:core-tests").projectDir = new File(rootProject.projectDir, 'libs/core/src/test') project(":libs:core-tests").buildFileName = 'eclipse-build.gradle' project(":libs:dissect").projectDir = new File(rootProject.projectDir, 'libs/dissect/src/main') project(":libs:dissect").buildFileName = 'eclipse-build.gradle' project(":libs:dissect-tests").projectDir = new File(rootProject.projectDir, 'libs/dissect/src/test') project(":libs:dissect-tests").buildFileName = 'eclipse-build.gradle' project(":libs:nio").projectDir = new File(rootProject.projectDir, 'libs/nio/src/main') project(":libs:nio").buildFileName = 'eclipse-build.gradle' project(":libs:nio-tests").projectDir = new File(rootProject.projectDir, 'libs/nio/src/test') project(":libs:nio-tests").buildFileName = 'eclipse-build.gradle' project(":libs:x-content").projectDir = new File(rootProject.projectDir, 'libs/x-content/src/main') project(":libs:x-content").buildFileName = 'eclipse-build.gradle' project(":libs:x-content-tests").projectDir = new File(rootProject.projectDir, 'libs/x-content/src/test') project(":libs:x-content-tests").buildFileName = 'eclipse-build.gradle' project(":libs:secure-sm").projectDir = new File(rootProject.projectDir, 'libs/secure-sm/src/main') project(":libs:secure-sm").buildFileName = 'eclipse-build.gradle' project(":libs:secure-sm-tests").projectDir = new File(rootProject.projectDir, 'libs/secure-sm/src/test') project(":libs:secure-sm-tests").buildFileName = 'eclipse-build.gradle' project(":libs:grok").projectDir = new File(rootProject.projectDir, 'libs/grok/src/main') project(":libs:grok").buildFileName = 'eclipse-build.gradle' project(":libs:grok-tests").projectDir = new File(rootProject.projectDir, 'libs/grok/src/test') project(":libs:grok-tests").buildFileName = 'eclipse-build.gradle' project(":libs:geo").projectDir = new File(rootProject.projectDir, 'libs/geo/src/main') project(":libs:geo").buildFileName = 'eclipse-build.gradle' project(":libs:geo-tests").projectDir = new File(rootProject.projectDir, 'libs/geo/src/test') project(":libs:geo-tests").buildFileName = 'eclipse-build.gradle' project(":libs:ssl-config").projectDir = new File(rootProject.projectDir, 'libs/ssl-config/src/main') project(":libs:ssl-config").buildFileName = 'eclipse-build.gradle' project(":libs:ssl-config-tests").projectDir = new File(rootProject.projectDir, 'libs/ssl-config/src/test') project(":libs:ssl-config-tests").buildFileName = 'eclipse-build.gradle' } // 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) } } project(":libs:cli").name = 'elasticsearch-cli' project(":libs:geo").name = 'elasticsearch-geo' project(":libs:ssl-config").name = 'elasticsearch-ssl-config'