187 lines
6.5 KiB
Groovy
187 lines
6.5 KiB
Groovy
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:integ-test-zip',
|
|
'distribution:zip',
|
|
'distribution:tar',
|
|
'distribution:deb',
|
|
'distribution:rpm',
|
|
'distribution:tools:launchers',
|
|
'distribution:tools:plugin-cli',
|
|
'server',
|
|
'server:cli',
|
|
'test:framework',
|
|
'test:fixtures:example-fixture',
|
|
'test:fixtures:hdfs-fixture',
|
|
'test:fixtures:krb5kdc-fixture',
|
|
'test:fixtures:old-elasticsearch',
|
|
'test:logger-usage',
|
|
'libs:elasticsearch-core',
|
|
'libs:elasticsearch-nio',
|
|
'modules:aggs-matrix-stats',
|
|
'modules:analysis-common',
|
|
'modules:ingest-common',
|
|
'modules:lang-expression',
|
|
'modules:lang-mustache',
|
|
'modules:lang-painless',
|
|
'modules:mapper-extras',
|
|
'modules:parent-join',
|
|
'modules:percolator',
|
|
'modules:rank-eval',
|
|
'modules:reindex',
|
|
'modules:repository-url',
|
|
'modules:transport-netty4',
|
|
'modules:tribe',
|
|
'plugins:analysis-icu',
|
|
'plugins:analysis-kuromoji',
|
|
'plugins:analysis-phonetic',
|
|
'plugins:analysis-smartcn',
|
|
'plugins:analysis-stempel',
|
|
'plugins:analysis-ukrainian',
|
|
'plugins:discovery-azure-classic',
|
|
'plugins:discovery-ec2',
|
|
'plugins:discovery-file',
|
|
'plugins:discovery-gce',
|
|
'plugins:ingest-geoip',
|
|
'plugins:ingest-attachment',
|
|
'plugins:ingest-user-agent',
|
|
'plugins:mapper-murmur3',
|
|
'plugins:mapper-size',
|
|
'plugins:repository-azure',
|
|
'plugins:repository-gcs',
|
|
'plugins:repository-hdfs',
|
|
'plugins:repository-s3',
|
|
'plugins:jvm-example',
|
|
'plugins:store-smb',
|
|
'plugins:transport-nio',
|
|
'qa:auto-create-index',
|
|
'qa:ccs-unavailable-clusters',
|
|
'qa:evil-tests',
|
|
'qa:full-cluster-restart',
|
|
'qa:integration-bwc',
|
|
'qa:mixed-cluster',
|
|
'qa:multi-cluster-search',
|
|
'qa:no-bootstrap-tests',
|
|
'qa:reindex-from-old',
|
|
'qa:rolling-upgrade',
|
|
'qa:smoke-test-client',
|
|
'qa:smoke-test-http',
|
|
'qa:smoke-test-ingest-with-all-dependencies',
|
|
'qa:smoke-test-ingest-disabled',
|
|
'qa:smoke-test-multinode',
|
|
'qa:smoke-test-rank-eval-with-mustache',
|
|
'qa:smoke-test-plugins',
|
|
'qa:smoke-test-reindex-with-all-modules',
|
|
'qa:smoke-test-tribe-node',
|
|
'qa:vagrant',
|
|
'qa:verify-version-constants',
|
|
'qa:wildfly',
|
|
'qa:query-builder-bwc'
|
|
]
|
|
|
|
projects.add("libs")
|
|
File libsDir = new File(rootProject.projectDir, 'libs')
|
|
for (File libDir : new File(rootProject.projectDir, 'libs').listFiles()) {
|
|
if (libDir.isDirectory() == false) continue;
|
|
if (libDir.name.startsWith('build') || libDir.name.startsWith('.')) continue;
|
|
projects.add("libs:${libDir.name}".toString())
|
|
}
|
|
|
|
/* Create projects for building BWC snapshot distributions from the heads of other branches */
|
|
final List<String> branches = ['5.6', '6.0', '6.1', '6.x']
|
|
for (final String branch : branches) {
|
|
projects.add("distribution:bwc-snapshot-${branch}".toString())
|
|
}
|
|
|
|
boolean isEclipse = System.getProperty("eclipse.launcher") != null || gradle.startParameter.taskNames.contains('eclipse') || gradle.startParameter.taskNames.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:elasticsearch-nio-tests'
|
|
}
|
|
|
|
include projects.toArray(new String[0])
|
|
|
|
project(':build-tools').projectDir = new File(rootProject.projectDir, 'buildSrc')
|
|
|
|
/* The BWC snapshot projects share the same build directory and build file,
|
|
* but apply to different backwards compatibility branches. */
|
|
for (final String branch : branches) {
|
|
project(":distribution:bwc-snapshot-${branch}").projectDir = new File(rootProject.projectDir, 'distribution/bwc')
|
|
}
|
|
|
|
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:elasticsearch-nio").projectDir = new File(rootProject.projectDir, 'libs/elasticsearch-nio/src/main')
|
|
project(":libs:elasticsearch-nio").buildFileName = 'eclipse-build.gradle'
|
|
project(":libs:elasticsearch-nio-tests").projectDir = new File(rootProject.projectDir, 'libs/elasticsearch-nio/src/test')
|
|
project(":libs:elasticsearch-nio-tests").buildFileName = 'eclipse-build.gradle'
|
|
}
|
|
|
|
/**
|
|
* 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, List<String> projects, List<String> branches) {
|
|
if (dir.isDirectory() == false) return;
|
|
if (dir.name == 'buildSrc') return;
|
|
if (new File(dir, 'build.gradle').exists() == false) return;
|
|
|
|
final String projectName = "${path}:${dir.name}"
|
|
include projectName
|
|
|
|
if (dir.name == 'bwc-snapshot-dummy-projects') {
|
|
for (final String branch : branches) {
|
|
final String snapshotProjectName = "${projectName}:bwc-snapshot-${branch}"
|
|
projects.add(snapshotProjectName)
|
|
include snapshotProjectName
|
|
project("${snapshotProjectName}").projectDir = dir
|
|
}
|
|
// TODO do we want to assert that there's nothing else in the bwc directory?
|
|
} else {
|
|
if (path.isEmpty() || path.startsWith(':example-plugins')) {
|
|
project(projectName).projectDir = dir
|
|
}
|
|
for (File subdir : dir.listFiles()) {
|
|
addSubProjects(projectName, subdir, projects, branches)
|
|
}
|
|
}
|
|
}
|
|
|
|
// include 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, projects, [])
|
|
}
|
|
project(':example-plugins').projectDir = new File(rootProject.projectDir, 'plugins/examples')
|
|
|
|
// 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, projects, branches)
|
|
}
|
|
}
|
|
include 'libs'
|
|
|