Upgrade to Pro — share decks privately, control downloads, hide ads and more …

やってみようMaven!

n-seki
November 08, 2022

 やってみようMaven!

n-seki

November 08, 2022
Tweet

More Decks by n-seki

Other Decks in Technology

Transcript

  1. 自己紹介 • 上関 直人( Uwaseki Naoto ) • @n_seki_ (Twitter

    ) / @n-seki ( GitHub ) • STORES 株式会社 ◦ STORES 決済 アプリ/ SDK の開発
  2. この発表のねらい • ライブラリを Maven Repository に公開(アップロード)するため の記述 • 1 行ずつ何をやっているのか見

    ていきます! • これからライブラリを公開しようと 考えている方 • Maven Publish Plugin に興味が ある方
  3. Mavenとはなにか? Apache Maven is a software project management and comprehension

    tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information. https://maven.apache.org/
  4. Mavenとはなにか? Apache Maven is a software project management and comprehension

    tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information. https://maven.apache.org/ • ソフトウェアプロジェクトの管理管理ツール
  5. Mavenとはなにか? Apache Maven is a software project management and comprehension

    tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information. https://maven.apache.org/ • ソフトウェアプロジェクトの管理管理ツール • Project Object Model ( POM )をベースにしている
  6. Mavenとはなにか? Apache Maven is a software project management and comprehension

    tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information. https://maven.apache.org/ • ソフトウェアプロジェクトの管理管理ツール • Project Object Model ( POM )をベースにしている • ビルド、(テスト)レポート、ドキュメントの管理ができる
  7. Project Object Model(POM)? • Maven が利用する設定ファイル ◦ 公開対象のライブラリの id やバージョン、依存関係など

    ◦ 実体は xml ファイル • Maven Publish Plugin は POM を生成します(詳しくは後述)
  8. Maven Publish Pluginとはなにか • アーティファクトを Maven リポジトリに公開する ◦ アーティファクト ->

    ライブラリ( .aar )など ◦ Maven リポジトリ -> Maven Central, 自分で立てたリポジトリな ど • Gradle の DSL で公開の設定情報を記述できる • 公開用の Gradle Task を生成する
  9. Maven Publish Pluginの使いかた(何を設定するか) • 何を公開するか ◦ 例えば Android ライブラリ( .aar

    ) • どこに公開するか ◦ 例えば Maven Central Repository • どのように公開するか ◦ 記述された情報から公開用の Gradle Task が生成される ◦ 例えば PublishToMavenRepository
  10. release(MavenPublication) • MavenPublication に maven に 関する設定を行える API がいろ いろ生えている

    • この行で release という公開は maven の仕組みを使うという宣 言にもなっている
  11. from compoments.release • from は MavenPublication の API • AGP8.0

    以上では次のような記 述が必須 publishing { singleVariant("release") } • release バリアントのビルド成果 物を公開対象にすると宣言
  12. from compoments.release • release という publication では release バリアントでビルドした aar

    を公開する、という意味合い になる • component の生成がプロジェク ト評価中に行われるので afterEvaluate で囲む
  13. repositories { } • どこに公開するかの設定 • maven { } で

    Maven Repository の設定ができる • 通常 url にはリモートリポジトリ ( Maven Central など)の URL を 設定するが、サンプルのように ローカルディレクトリでも OK
  14. Repositoryへ公開する! • 生成された Gradle Task を実行するだけ ◦ ビルドと POM 生成

    ◦ それらの公開(指定された URL へのアップロード) ./gradlew publishReleasePublicationToMyrepoRepository
  15. まとめ • Maven では POM という xml ファイルが利用される • Maven

    Publish Plugin を使って Maven repository にライブラ リを公開できる ◦ 何を公開するか ◦ どこに公開するか ◦ どう公開するか( Gradle Task が生成される) • Android Developers の日本語公式は少し記述が古いので、 英語版を参照するのがオススメです
  16. 参考ドキュメント • Gradle ◦ https://docs.gradle.org/current/userguide/publishing_maven.html ◦ https://docs.gradle.org/current/userguide/publishing_setup.html • Android ◦

    https://developer.android.com/studio/publish-library/upload-library ◦ https://developer.android.com/studio/publish-library/configure-pub-variants