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!