Eclipse Javaプロジェクトのクラス出力先を変える

2013-09-24T00:00:00+00:00 Eclipse gradle

結論から言うと

という風になれば良いんだが、このプロジェクトのベースが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とかリポジトリに入れてるのはなんかダサい感じも否めないので

jquery.onepage-scrollを使ってみた Struts2をやってみる (11) - Interceptor -