Androidライブラリプロジェクトの作成は簡単です。それを他のダウンストリームアプリに配布することは、本当に面白いことです。
build.gradle
ファイルのdependencies
ブロックにアーティファクトを追加し、自動的にフェッチするように、Androidで他の依存関係をどのように使用するかをミンチするのが理想的です。そこに問題があるのは、JCenter、Maven Central、または他のパブリックアーティファクトホスティングでホストしたくないプライベートライブラリです。一部の企業には、これ専用のアーティファクトホスティングサーバーの内部インスタンスがあります。
幸運にも、maven-publish
Gradle pluginを使用してMavenを(マシン上で)ローカルに使用し、同じ効果を達成できます。まず、ライブラリプロジェクトのbuild.gradle
ファイルで、あなたは
apply plugin: 'maven-publish'
publishing {
publications {
mavenJava(MavenPublication) {
groupId 'your.package.namespace'
artifactId 'library.name'
version '0.1' // for example
artifacts = configurations.archives.artifacts
artifact sourceJar
}
}
}
次を必要とする、あなたは、あなたの下流プロジェクトに
./gradlew publishToMavenLocal
次を実行して、ローカルのMavenキャッシュにこのライブラリを公開するようmavenLocal
を追加する必要があります以前に使用したグループID、案件ID、バージョンを使用して依存関係を追加してください:
repositories {
mavenLocal()
/* more repositories here */
}
dependencies {
compile 'your.package.namespace:library.name:version'
/* more dependencies here */
}
。
すべての開発者は、ライブラリプロジェクトを少なくとも一度はプルダウンしてから、Mavenローカルに公開するコマンドを実行する必要があります。ライブラリプロジェクトが変更された場合は、バージョンを更新する必要があります。変更をプルダウンしてローカルに再度パブリッシュします。これは少し扱いにくくなることがあります。
多くの企業では、これを回避するために内部的にサーバーインスタンスをホストしているため、一度内部のホストおよびダウンストリームプロジェクトに公開すると、build.gradle
のバージョンが更新され、自動的に同期されます。これには、(ライブラリの)publishing
ブロックと(ダウンストリームプロジェクトの)ブロックのためのいくつかの追加の設定が必要です。あなたがその方向に向かうつもりなら、それを研究するためにあなたに任せます。
[ベストプラクティス]の質問は、スタックオーバーフローに関するトピックではありません(// meta.stackoverflow.com/q/265928/2747593)。この質問は、[Programmers.se]の話題になる可能性があるので、代わりに投稿することを検討してください。 [クロス投稿は一般的には嫌になります](// meta.stackexchange.com/tags/cross-posting/info)、(1)そこに新しい質問を投稿してこの質問を削除するか、(2) [モデレーターを移行する](// meta.stackexchange.com/q/10249/269535)の質問にフラグを立てます。 –