Ответ Андреаса работает, если вы создаете проект Eclipse из командной строки, используя gradle cleanEclipse eclipse
. Если вы используете плагин STS Eclipse Gradle, вам нужно выполнить задачу afterEclipseImport
. Ниже мой полный рабочий фрагмент кода:
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)
}
}

У вас есть более подробный пример? Я могу представить две возможные причины, по которым исходная папка не добавляется. 1) исходная папка не входит в модельный град из ваших исходных папок ... или 2) когда проект импортируется, папка еще не существует. Независимо от того, находитесь ли вы в случае «1» или «2», может быть другое решение. Поэтому, если бы вы могли определить, что именно это поможет. Один из способов попробовать это - убедиться, что вы создали папку (даже если она пуста) перед импортом. Если папка теперь добавляется, то это должно быть из-за второй причины. – Kris