diff --git a/.gitignore b/.gitignore index add7a22e840e0..af7e64fc89515 100644 --- a/.gitignore +++ b/.gitignore @@ -4,12 +4,13 @@ *.iml *.ipr *.iws +build-idea/ # eclipse files .project .classpath -eclipse-build .settings +build-eclipse/ # netbeans files nb-configuration.xml @@ -18,7 +19,6 @@ nbactions.xml # gradle stuff .gradle/ build/ -generated-resources/ # maven stuff (to be removed when trunk becomes 4.x) *-execution-hints.log @@ -38,5 +38,5 @@ html_docs # random old stuff that we should look at the necessity of... /tmp/ backwards/ - +eclipse-build diff --git a/build.gradle b/build.gradle index c31fe88f5d25f..1e7a8cbef841e 100644 --- a/build.gradle +++ b/build.gradle @@ -75,8 +75,9 @@ subprojects { allprojects { // injecting groovy property variables into all projects project.ext { - // for eclipse hacks... + // for ide hacks... isEclipse = System.getProperty("eclipse.launcher") != null || gradle.startParameter.taskNames.contains('eclipse') || gradle.startParameter.taskNames.contains('cleanEclipse') + isIdea = System.getProperty("idea.active") != null || gradle.startParameter.taskNames.contains('idea') || gradle.startParameter.taskNames.contains('cleanIdea') } } @@ -170,12 +171,15 @@ gradle.projectsEvaluated { allprojects { apply plugin: 'idea' + if (isIdea) { + project.buildDir = file('build-idea') + } idea { module { // same as for the IntelliJ Gradle tooling integration inheritOutputDirs = false - outputDir = file('build/classes/main') - testOutputDir = file('build/classes/test') + outputDir = file('build-idea/classes/main') + testOutputDir = file('build-idea/classes/test') iml { // fix so that Gradle idea plugin properly generates support for resource folders @@ -222,14 +226,19 @@ allprojects { apply plugin: 'eclipse' plugins.withType(JavaBasePlugin) { - eclipse.classpath.defaultOutputDir = new File(project.buildDir, 'eclipse') + File eclipseBuild = project.file('build-eclipse') + eclipse.classpath.defaultOutputDir = eclipseBuild + if (isEclipse) { + // set this so generated dirs will be relative to eclipse build + project.buildDir = eclipseBuild + } eclipse.classpath.file.whenMerged { classpath -> // give each source folder a unique corresponding output folder int i = 0; classpath.entries.findAll { it instanceof SourceFolder }.each { folder -> i++; // this is *NOT* a path or a file. - folder.output = "build/eclipse/" + i + folder.output = "build-eclipse/" + i } } } diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index a0f06343d30c4..de3b7d02a0c4a 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -78,7 +78,7 @@ extraArchive { eclipse { classpath { - defaultOutputDir = new File(file('build'), 'eclipse') + defaultOutputDir = file('build-eclipse') } } diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginPropertiesTask.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginPropertiesTask.groovy index de3d060ff2664..7b525d39f5312 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginPropertiesTask.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginPropertiesTask.groovy @@ -29,7 +29,7 @@ import org.gradle.api.tasks.Copy class PluginPropertiesTask extends Copy { PluginPropertiesExtension extension - File generatedResourcesDir = new File(project.projectDir, 'generated-resources') + File generatedResourcesDir = new File(project.buildDir, 'generated-resources') PluginPropertiesTask() { File templateFile = new File(project.buildDir, 'templates/plugin-descriptor.properties')