前回Android Studioを使用したときは.gradle
、mavencentral()
ビルドスクリプトリポジトリでファイルを生成していましたが、現在はjcenter()
です。
誰もがこれに関連する問題を説明できますか?他にレポはありますか?いつ切り替える必要がありますか?プロジェクト、モジュール、ライブラリにどのような影響がありますか?Android開発者にとって他に必要なものはありますか?
これらのリポジトリを維持する責任があるのは誰ですか?
前回Android Studioを使用したときは.gradle
、mavencentral()
ビルドスクリプトリポジトリでファイルを生成していましたが、現在はjcenter()
です。
誰もがこれに関連する問題を説明できますか?他にレポはありますか?いつ切り替える必要がありますか?プロジェクト、モジュール、ライブラリにどのような影響がありますか?Android開発者にとって他に必要なものはありますか?
これらのリポジトリを維持する責任があるのは誰ですか?
回答:
Bintrayで、 Googleがこの変更を加えた理由を説明する非常に詳細なブログ投稿をブログに書き直しました。最も重要なポイントは次のとおりです。
jcenter()
のスーパーセットでありmavenCentral()
、多くの追加のリポジトリとアーティファクトが含まれます。パフォーマンスの改善に関して、Android開発者の支持者の2人が、Maven Centralでの巨大なインデックス作成の問題に直面/気付きました。
Tor Norbyeの言葉で:
私は真新しい設定ディレクトリでAndroidStudioを実行したので、Maven Centralに接続して、利用可能なアーティファクトのインデックスをダウンロードしました。
次に、たまたまディレクトリのサイズを確認しました。
私の〜/ Library / Cache / AndroidStudioPreviewは1.5Gで、そのうちの1.2Gは「Maven」サブディレクトリによって取得されています。
それはばかげています。インデックスはほとんど使用しません。その主な用途は、プロジェクト構造ダイアログの依存関係エディターですが、事前に計算されたインデックスを用意する必要はありません。MavenCentralには、誰かがアーティファクトを検索するときにオンデマンドで使用できる高速のオンラインJSON検索があります。でhttps://android-review.googlesource.com/#/c/94843/私たちは、依存関係が最新である、とアーティファクトの一握りの検索がインスタント近くにあるかどうかをチェックしリントチェックを追加しました。
つまり、キャッシュは実際には必要ありません。.gradleおよびmaven .pomファイルでのコード補完に役立つ可能性がありますが、これは非常に重要なユースケースではなく、1日で実行できるようにすべてのユーザーが1.5Gのダウンロード速度とディスク容量を犠牲にする必要があるわけではありません。続きを読む:Mavenインデックスは巨大です!
また、Hacker Newsに関するこの非常に短い(1Qおよび1A)ディスカッションは興味深いかもしれません。
私は同じことを考えていましたが、明確な答えはありませんが、私が学んだこと(少し)を共有する価値があると考えました。Maven CentralからJCenterへの移行についての言及をGoogle Codeの1つの問題の中で見つけましたが、これがいつ起こったのかについての詳細はわかりませんでした-Android Studioの最近の変更リストで言及を見つけることができませんでした。
JCenterを読んでみると、これはBintrayの背後にあるリポジトリで、JFrogという会社(以前に出会ったことがあり、「J」の出所だと思います)のリポジトリです。Bintrayブログによると、Bintray はMaven Centralのスーパーセットであるため、依存関係が欠落しているという問題は発生しないはずですが、プロジェクトで使用しているものに正確に依存していると思います。両方とも簡単に検索できる素晴らしいウェブサイトを持っているので、リポジトリをチェックしてください。したがって、誰がこれらのリポジトリを維持するかについては、私が知っているように、依存関係を各リポジトリに追加するのは依存関係のプロデューサー次第であり、サービスを維持するのはリポジトリ所有者次第です。
いつ切り替えるかという点では、うまくいくのは難しいです。AOSPはまだ(新しいAndroidアプリケーションのテンプレートを調べて)Maven Centralを使用しているようですが、そのテンプレートも非常に古いGradleバージョン(0.4)を使用しています。jcenterからの依存関係に問題がある他の人についていくつかの問題がありますが、実際にはあまり報告されていません。GoogleがAS finalをリリースする前に、他のリポジトリに再度切り替える可能性があります。Maven Centralがまだ問題なく機能している場合は、特に大規模な商用ソリューションを構築している場合は、それまでは切り替えを保留できます。
build.gradleファイルのデフォルトに関係なく-チームベースの開発作業では、Sonatype NexusやJFrog Artifactoryなどのリポジトリマネージャーを実際に使用し、これらのアップストリームリポジトリを直接参照しないでください。
これにより、多くの帯域幅を節約し、他の多くのリポジトリを組み合わせて、独自のネットワークですべてを管理できます。
Maven Central対JCenterの観点から。JCenterは、JFrogがMaven Centralを採用、拡張(および根絶)するための取り組みです。Maven Centralは、Maven、SBTなどのデフォルトリポジトリですが、GradleはJCenterに切り替えました。JFrogとGradlewareが企業として連携していることを考えると、これは当然のことです。現在、Android SDKはビルドシステムとしてGradleを使用しているため、JCenterへの移行はロジックの次のステップでした。
JCenter自体は、Maven Centralの上にある薄いベニアです。それは(多かれ少なかれ正常に)それをプロキシし、追加のコンポーネントを追加します。どちらもCDNネットワークでホストされ、高いパフォーマンスを発揮します。Maven Central自体がすべてのEclipse、Apache、および他のほとんどのオープンソースプロジェクトのターゲットであり、それがなければJCenterはほとんど空になります。
どちらを使用しても問題はありませんが、リポジトリマネージャーを使用してソースを直接制御できるソースに直接アクセスすることをお勧めします。たとえば、Nexusオープンソースは無料で、Maven、Gradle、SBT、Ivyなどで使用されるMavenリポジトリのサポートに加えて、NuGet、NPM、RubyGemsのサポートも備えています。
免責事項:私は、無料のCentral RepositoryのスポンサーであるSonatypeのNexusおよびNexusトレーナーによるリポジトリ管理の著者であり、Android Mavenプラグインのプロジェクトリーダーであり、AOSPから再構築することにより、いくつかのAndroidライブラリをCentralにプッシュしました。
http://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/en
この記事はあなたの質問に答えることができます。
Android Studioは最初、デフォルトのリポジトリとしてMaven Centralを選択しました。古いバージョンのAndroid Studioから新しいプロジェクトを作成すると、mavenCentral()がbuild.gradleで自動的に定義されます。
しかし、Maven Centralの大きな問題は、開発者にとって使いにくいことです。ライブラリをアップロードするのは驚くほど難しいです。そうするためには、開発者はあるレベルのマニアックである必要があります。セキュリティ上の懸念などの理由により、Android Studioチームはデフォルトのリポジトリをjcenterに切り替えることにしました。最新バージョンのAndroid Studioから新しいプロジェクトを作成すると、jcenter()が自動的に定義されることがわかります。 mavenCentral()の代わりに。