BintrayやJCenterがシャットダウンされることになり、jcenter, bintray 廃止で自分のAndroidアプリに対応したことのメモを参考に調査していた際に、jcenterにだけ存在するライブラリが含まれていても、エラーにならないことがあったので、原因を調査しました。
jcenterの参照が外れない原因
担当しているアプリではgroupie(移行してくれ頼む〜〜)を利用しているため、jcenterの依存を除外するとエラーになる想定でしたが、エラーになりませんでした。
repositories {
mavenCentral()
google()
- jcenter()
}
$ ./gradlew assemble --refresh-dependencies
・・・
BUILD SUCCESSFUL in 1m 45s
36 actionable tasks: 36 up-to-date
最初に実行した時には、jitpackも利用していることかと思いましたが、jitpackを外しても参照が外れないため、少し調べるとStack Overflowにこんな記事を見つけました。
どうやらgradleプラグインが、jcenterレポジトリへの依存を追加する場合があるようです。
対応方法
上述したStack Overflowを参考に、jcenterリポジトリを追加するプラグインを見つけるスクリプトを作り対応をしました。
allprojects {
repositories.all {
if (url.host == 'jcenter.bintray.com') {
new Throwable('jcenter repository was just added').printStackTrace()
}
}
}
このスクプリトを./gradlew --init-script init.gradle help
で実行すると下記のようなエラーが表示されます。
java.lang.Throwable: jcenter repository was just added
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
・・・
at io.realm.gradle.Realm.apply(Realm.groovy:59)
at io.realm.gradle.Realm.apply(Realm.groovy)
・・・
エラー内容から、推測出来るプラグインをコメントアウトして、再度./gradlew assemble --refresh-dependencies
を実行すると期待通りにエラーが表示されました。
> Could not resolve all files for configuration
project :app
> Could not find com.xwray:groupie:2.9.0.
Required by:
project :app
> Could not find com.xwray:groupie-kotlin-android-extensions:2.9.0.
Required by:
project :app
> Could not find com.xwray:groupie-databinding:2.9.0.
Required by:
project :app
> Could not find com.google.android.exoplayer:exoplayer-core:2.13.1.
Required by:
project :app
> Could not find com.google.android.exoplayer:exoplayer-hls:2.13.1.
Required by:
project :app
> Could not find com.google.android.exoplayer:exoplayer-ui:2.13.1.
Required by:
project :app
最後に
今回この挙動を踏んでしまい、jcenterのシャットダウンの影響調査で少し困りました。
もしかしたら同じような罠にハマる方もいるかと思うので、一度影響調査してみてはいかがでしょうか。