Eclipse Javaプロジェクトのクラス出力先を変える
結論から言うと
という風になれば良いんだが、このプロジェクトのベースがgradleプロジェクトになっていて、どうにもこうにもEclipse上から設定出来ないなーって事で、gradleで無茶ぶりすればイケる模様
apply plugin: "java"
apply plugin: "eclipse"
ext {
targetDir = "target"
}
buildDir = targetDir
sourceSets {
main {
output.classesDir = "${buildDir}/classes"
output.resourcesDir = "${buildDir}/classes"
}
test {
// gradle testCompileの出力先
output.classesDir = "${buildDir}/test-classes"
}
}
eclipse.classpath.file {
whenMerged { classpath ->
classpath.entries.findAll { entry ->
// kindがsrcでpathが/^src/test/な正規表現にマッチする所はtarget/test-classesに出力先を指定する
if (entry.kind == "src" && entry.path =~ /^src/test/) {
entry.output = "${targetDir}/test-classes"
}
if (entry.kind == "output") {
entry.path = "${targetDir}/classes"
}
}
}
}
src/test/resourcesってtest-resourcesとかじゃなかったっけとこれ書いてる時点で疑問が出たけどまぁいいや
っていうか普通に.classpathを
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="output" path="target/classes"/>
<classpathentry output="target/test-classes" kind="src" path="src/test/java"/>
<classpathentry output="target/test-classes" kind="src" path="src/test/resources"/>
っていう感じで設定すれば良いっぽいけど、.classpathとかリポジトリに入れてるのはなんかダサい感じも否めないので
先日やったEclipseな出力先を変えるgradleなやつを数回やると、Eclipse上でエラーになるので、「eclipseClasspath.dependsOn cleanEclipseClasspath」な感じで走る前に一度.classpathをcleanさせる必要ありっぽい
— kinjouj (@kinjou_j) September 25, 2013