Gradleで、Java7以上向けにコンパイルする方法メモ。
発端はJavaコンパイル時の警告
ForgeGradle環境で、特に何も指定せずにただJavaコンパイルをすると、以下の様なエラーメッセージが出てしまいました。
警告: [options] ブートストラップ・クラスパスが-source 1.6と一緒に設定されていません
この警告自体はよく見るやつで、javacに-sourceを指定しておけば、でなくなります。
ついでなので、-targetもJava7で明示し、Java6環境とはバイバイしてますよって感じにしちゃおうかと思います。
sourceもtargetもないんだよ!
最初、「encodingみたいにoptionsにコンパイラー引数足せば終わりやろw」と思ってたんですが、CompileOptionsクラスのドキュメントには、source()メソッドもsetSource()メソッドも見当たらず、肝心の-sourceオプションが設定できませんでした。
もちろんtargetの方も見当たらない。つらい。( っ╯•﹏•╰c)
でもまさか、追加する手段が用意されてないわけはないよなー、つってGroovyDocとにらめっこしてたら、ありました。
やりかた
compilerArgs()メソッドで取得できるString型のリストに、コンパイラー引数をスペースごとに分けて追加してあげれば、目的は達成できました。
ソースファイルのエンコードとあわせ、以下のように設定して、警告はでないようになり、Java7用のクラスファイルが生成されるようになりました。
[compileJava, compileTestJava].each{
it.options.encoding = 'UTF-8'
it.options.compilerArgs += ['-source', '1.7', '-target', '1.7']
}
おしまい。
ちなみに、options.compilerArgs += ['-source', '1.7', '-target', '1.7']の部分をJavaのコードになおすと、こんな感じ。
options.compilerArgs().add("-source");
options.compilerArgs().add("1.7");
options.compilerArgs().add("-target");
options.compilerArgs().add("1.7");
Groooooooooooovy!