From d63b1efb146276e9656904eaa2903b7d1d5e6a75 Mon Sep 17 00:00:00 2001 From: Colin Goodheart-Smithe Date: Thu, 21 Dec 2017 14:34:15 +0000 Subject: [PATCH] Splits nio project into two for eclipse build only (#27939) * Splits nio project into two for eclipse build only https://github.com/elastic/elasticsearch/pull/27801 introduced a new gradle project `:libs:elasticsearch-nio` which creates cyclical project dependencies when importingthe projects into Eclipse. This change applies the same trick as we have for the core project where, and building for Eclipse, splits the `:libs:elasticsearch-nio` project into `:libs:elasticsearch-nio` which points to `src/main` and `:libs:elasticsearch-nio-tests` which points to `src/test`. This prevents cyclical project dependencies in Eclipse arising from the fact that eclipse does not separate compile/runtime dependencies from test dependencies. * Removes integTest bits since there are none --- libs/elasticsearch-nio/build.gradle | 20 +++++++++++++++++-- .../src/main/eclipse-build.gradle | 3 +++ .../src/test/eclipse-build.gradle | 7 +++++++ settings.gradle | 5 +++++ 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 libs/elasticsearch-nio/src/main/eclipse-build.gradle create mode 100644 libs/elasticsearch-nio/src/test/eclipse-build.gradle diff --git a/libs/elasticsearch-nio/build.gradle b/libs/elasticsearch-nio/build.gradle index 1ce16e7ae2a..247edeeed35 100644 --- a/libs/elasticsearch-nio/build.gradle +++ b/libs/elasticsearch-nio/build.gradle @@ -39,8 +39,24 @@ dependencies { testCompile "com.carrotsearch.randomizedtesting:randomizedtesting-runner:${versions.randomizedrunner}" testCompile "junit:junit:${versions.junit}" testCompile "org.hamcrest:hamcrest-all:${versions.hamcrest}" - testCompile("org.elasticsearch.test:framework:${version}") { - exclude group: 'org.elasticsearch', module: 'elasticsearch-nio' + + if (isEclipse == false || project.path == ":libs:elasticsearch-nio-tests") { + testCompile("org.elasticsearch.test:framework:${version}") { + exclude group: 'org.elasticsearch', module: 'elasticsearch-nio' + } + } +} + +if (isEclipse) { + // in eclipse the project is under a fake root, we need to change around the source sets + sourceSets { + if (project.path == ":libs:elasticsearch-nio") { + main.java.srcDirs = ['java'] + main.resources.srcDirs = ['resources'] + } else { + test.java.srcDirs = ['java'] + test.resources.srcDirs = ['resources'] + } } } diff --git a/libs/elasticsearch-nio/src/main/eclipse-build.gradle b/libs/elasticsearch-nio/src/main/eclipse-build.gradle new file mode 100644 index 00000000000..5aa089de19e --- /dev/null +++ b/libs/elasticsearch-nio/src/main/eclipse-build.gradle @@ -0,0 +1,3 @@ + +// this is just shell gradle file for eclipse to have separate projects for elasticsearch-nio src and tests +apply from: '../../build.gradle' diff --git a/libs/elasticsearch-nio/src/test/eclipse-build.gradle b/libs/elasticsearch-nio/src/test/eclipse-build.gradle new file mode 100644 index 00000000000..6b5d202dddd --- /dev/null +++ b/libs/elasticsearch-nio/src/test/eclipse-build.gradle @@ -0,0 +1,7 @@ + +// this is just shell gradle file for eclipse to have separate projects for elasticsearch-nio src and tests +apply from: '../../build.gradle' + +dependencies { + testCompile project(':libs:elasticsearch-nio') +} diff --git a/settings.gradle b/settings.gradle index 79a767a98d0..440ecf7dfdb 100644 --- a/settings.gradle +++ b/settings.gradle @@ -109,6 +109,7 @@ if (isEclipse) { // eclipse cannot handle an intermediate dependency between main and test, so we must create separate projects // for core-src and core-tests projects << 'core-tests' + projects << 'libs:elasticsearch-nio-tests' } include projects.toArray(new String[0]) @@ -131,6 +132,10 @@ if (isEclipse) { project(":core").buildFileName = 'eclipse-build.gradle' project(":core-tests").projectDir = new File(rootProject.projectDir, 'core/src/test') project(":core-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' } /**