Andreas's answer works if you create an Eclipse project from the command line using gradle cleanEclipse eclipse . If you are using the STS Eclipse Gradle plugin, then you need to implement the afterEclipseImport task. Below is my full working snippet:
project.ext { genSrcDir = projectDir.absolutePath + '/gen/main/java' } compileJava { options.compilerArgs += ['-s', project.genSrcDir] } compileJava.doFirst { task createGenDir << { ant.mkdir(dir: project.genSrcDir) } createGenDir.execute() println 'createGenDir DONE' } eclipse.classpath.file.whenMerged { classpath - > def genSrc = new org.gradle.plugins.ide.eclipse.model.SourceFolder('gen/main/java', null) classpath.entries.add(genSrc) } task afterEclipseImport(description: "Post processing after project generation", group: "IDE") { doLast { compileJava.execute() def classpath = new XmlParser().parse(file(".classpath")) new Node(classpath, "classpathentry", [kind: 'src', path: 'gen/main/java']); def writer = new FileWriter(file(".classpath")) def printer = new XmlNodePrinter(new PrintWriter(writer)) printer.setPreserveWhitespace(true) printer.print(classpath) } }

source share