AwAlog

めもちょー

Gradle上でJava7用にコンパイルする

| Comments

Gradleで、Java7以上向けにコンパイルする方法メモ。

発端はJavaコンパイル時の警告

ForgeGradle環境で、特に何も指定せずにただJavaコンパイルをすると、以下の様なエラーメッセージが出てしまいました。

警告: [options] ブートストラップ・クラスパスが-source 1.6と一緒に設定されていません

この警告自体はよく見るやつで、javac-sourceを指定しておけば、でなくなります。

ついでなので、-targetもJava7で明示し、Java6環境とはバイバイしてますよって感じにしちゃおうかと思います。

sourcetargetもないんだよ!

最初、「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!

Comments