猫好きモバイルアプリケーション開発者記録

Gradle 1.xから2.0へ移行する際に気をつけるべき変更点

| Comments

7/1にGradle 2.0がリリースされました。
複数の非推奨メソッドの削除が行われたため、 1.xで動作していたものが、2.0から動かなくなるケースが出てきました。 全てのケースを紹介しているとキリがないので、 今回は特に大きいと思われる 2 点の変更点のみ紹介させて頂きます。

変数の直接宣言の非サポート

これは1.10くらいのときから警告が出るようになっていましたが、 具体的には以下のように変数を宣言するのが無効になりました。

1
2
project.myProperty = 'some value'
assert myProperty == 'some value'

これを解決するには、 extの名前空間で囲むか、defキーワードを指定してローカル変数として宣言します。

1
2
3
4
5
6
7
// ローカル変数として定義するか
def myProperty = 'some value'
assert myProperty == 'some value'

// extの名前空間内で宣言するか
ext.myProperty == 'some value'
assert myProperty == 'some value'

EclipseとIntellij IDEAでprovidedな依存関係指定時の変更

provided指定の方法は以前の記事でも何度か紹介させて頂きましたが、 以前までは以下のように指定していました。

1
2
eclipse.classpath.plusConfigurations += project(':base').configurations.provided
idea.module.scopes.PROVIDED.plus     += project(':base').configurations.provided

1.xまではこのままでよかったのですが、 2.0からは += 演算子で configurations の指定を追加する場合、 以下のように指定します。

1
2
eclipse.classpath.plusConfigurations += [project(':base').configurations.provided]
idea.module.scopes.PROVIDED.plus     += [project(':base').configurations.provided]

1.xでもこの指定で動作するので、1.xをまだ利用している場合でもこちらの指定に変更するべきでしょう。 これについては、2.0ではタスク実行時に「You can’t change configuration ‘(追加変数名)’ because it is already resolved!」 といったようなエラーメッセージが表示されるようになりましたので、 このエラーが表示されたら上記記載に変更してみましょう。

まとめ

今回は1.xから2.0へ移行する際にハマるであろうポイントのみ紹介させて頂きました。
リリースノートにはもっと詳細に紹介されていますので、 詳しい内容についてはこちらをご覧ください。

Comments