Android mavenリリース


プロジェクトが中後期になると、基本的に複数または十数個のモジュール構成があります.各モジュールは相対的に独立しているが、互いに依存しているものもある.
現段階の会社の各モジュールには個別の倉庫管理があり、他のモジュールのaarを導入することによって依存を実現する.この方法は簡単で速いが、一つの倉庫が更新された後、他の倉庫は手動で改版のaarをコピーする必要がある.これはバージョン管理に不利であり、面倒である.
この場合、mavenによってそれぞれの倉庫のバージョンをMaven倉庫に公開する必要があります.その後、各倉庫はmavebによって必要な依存を参照することができます.
社内では私有Maven倉庫を自分で建て、パッケージを私有Maven倉庫に公開します.現在のmoduleのgradleでmavenパブリッシュを行う構成

uploadArchives {
repositories {
mavenDeployer {
pom.project {
groupId = "com.zsg.sample"
artifactId = "smart"
version = "1.0.0"
}
repository(url: "http://192.168.0.1:8800/test") {
authentication(userName: "admin", password: "123")
}

}
}
}

上でmavenを簡単に構成します.gradleのtaskを実行して倉庫をmavenにアップロードする
他のモジュールではcompile"com.zsg.sample:smart:1.0.0@aar"
[img]http://dl2.iteye.com/upload/attachment/0128/7051/9439e432-78cf-37ff-9bc4-ba0eef790ec9.jpeg[/img]
このtaskを実行すると、プロジェクトがコンパイルされ、最後に倉庫で生成されたaarとpomsファイルがmavenに転送されます.aarこれはみんな知っていますが、ここではpomsファイルを簡単に紹介します.
buildディレクトリにpomsフォルダが表示されます.pom-defaultがあります.xmlファイル、このファイルは倉庫の名前、バージョンなどの重要な情報を宣言して、これらの情報はすべて私たちが上で構成したのです.そしてこのライブラリが依存する他の倉庫の情報です.ここで注意してください.mavenにパブリッシュされたこのライブラリに依存すると、pomsファイルで宣言された他のライブラリにも依存します.
[img]http://dl2.iteye.com/upload/attachment/0128/7053/4a940a72-0160-32fd-ac45-7c09d108082e.jpeg[/img]
ここでpomsファイルにappcompat-v 7というgoogleライブラリが宣言されているのが見えますが、パブリッシュ時にこのライブラリを依存に追加したくない場合はgradleファイルでcompileをprovidedに変更してパッケージ化するとpomsファイルにこの依存を入れることができます.
次に、私のモジュールがローカルのpanel-releaseモジュールに依存しているという問題が発生します.他のモジュールが私に依存しています.このモジュールはpanel-releaseモジュールに依存していますが、panel-releaseモジュールはローカルで、mavenに伝わっていないので、依存に失敗します.ここには3つの解決策があります.
1、panel-releaseの依存をprovidedに変えるとpomsに入れないが、コンパイルできない可能性がある.
2、pomsファイルを動的に生成する際にpanel-release依存を取り除く

uploadArchives {
repositories {
mavenDeployer {
conf2ScopeMappings.mappings.remove(configurations.compile)
......
}
}
}

3、依存するときはaarファイルのみに依存し、aarパッケージに依存する他のライブラリには依存しません.
compile "com.zsg.sample:smart:1.0.0@aar"
3つ目の方法を強くお勧めします!!!