maven+android archive

2014-02-19T00:00:00+00:00 Android gradle Java

参考: http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds

今時な手法として良いかは知らんけど、例えばAndroidプロジェクトでライブラリプロジェクトを伴うけど、アプリプロジェクトとは別で開発されていてそれは社内なりのMaven Repositories(後術参考)を介して利用できる。それをやってみた

Maven Repositoriesに関して

まず社内(ってことにしておく)にMaven Repositoriesが必要になるが、詳しくは「リポジトリ管理ツール「Nexus」でMavenをさらに活用しよう!」を参考に進める。まぁ要はnexus OSSを使ってMaven Repositoriesを構築する。今回はcorporateっていう名前のRepositoryを作っておいた。ここにライブラリプロジェクトのAARパッケージングをデプロイして、それをアプリプロジェクトで使えるようにする

ライブラリプロジェクトのデプロイ

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath "com.android.tools.build:gradle:0.8.+"
    }
}

version = "0.1"

apply plugin: "android-library"
apply plugin: "maven-publish"

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        versionName version
    }
}

publishing {
    publications {
        maven(MavenPublication) {
            groupId "sample.test"
            artifactId "library"

            artifact "${project.libsDir}/${project.name}-${project.version}.aar"
        }

        repositories {
            maven {
                credentials {
                    username "deployment"
                    password "deployment123"
                }

                url "http://[IP or domain]:8081/nexus/content/repositories/corporate"
            }
        }
    }
}

maven-publishなプラグインに関しては公式ドキュメント読んだ方が手っ取り早いかと

あとはpublishタスクを動かす事でMaven Repositoriesにデプロイする事が出来る

アプリプロジェクトでMaven RepositoriesなAARライブラリを使う

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath "com.android.tools.build:gradle:0.8.+"
    }
}

apply plugin: "android"

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"
}

repositories {
    mavenCentral()

    maven {
        url "http://[IP or domain]:8081/nexus/content/repositories/corporate"
    }
}

dependencies {
    compile "sample.test:library:0.1@aar"
}

な感じでライブラリプロジェクトをデプロイしたMaven Repositoriesから依存性を取って利用するっていう感じ

gradle-android-apt-plugin gradle-android-toolkit+robolectric-plugin