LoginSignup
1
0

More than 3 years have passed since last update.

Maven Publish PluginでAndroid Libraryのソースコードを公開する

Last updated at Posted at 2020-07-26

概要

Maven Publish Plugin で Android Library のソースコードを添付する方法です。

build.gradle.kts(差分のみ)

以下、既に Maven Publish Plugin を利用している場合向けの、差分のみを示したコードです。
※ 各値は自身の環境に合わせてください

build.gradle.kts
tasks {
    val androidSourcesJar by creating(Jar::class) {
        archiveClassifier.set("sources")
        from(android.sourceSets["main"].java.srcDirs)
    }
}

afterEvaluate {
    publishing {
        publications {
            create<MavenPublication>("maven") {
                artifact(tasks["androidSourcesJar"])
            }
        }
    }
}

build.gradle.kts

build.gradle.kts の全体像のサンプルです。

plugins {
    id("com.android.library")
    kotlin("android")
    id("kotlin-android-extensions")
    kotlin("kapt")
    `maven-publish`
}

android {
    compileSdkVersion(29)

    defaultConfig {
        minSdkVersion(23)
        targetSdkVersion(29)
        versionCode = 1
        versionName = "1.0"
        consumerProguardFiles("consumer-rules.pro")
    }

    buildTypes {
        getByName("release") {
            isMinifyEnabled = false
            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
        }
    }

    buildFeatures {
        dataBinding = true
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

tasks {
    val androidSourcesJar by creating(Jar::class) {
        archiveClassifier.set("sources")
        from(android.sourceSets["main"].java.srcDirs)
    }
}

dependencies {
    implementation(project(":kotlin"))
    implementation("androidx.constraintlayout:constraintlayout:1.1.3")
}

afterEvaluate {
    publishing {
        publications {
            create<MavenPublication>("maven") {
                from(components["release"])
                artifact(tasks["androidSourcesJar"])
                groupId = "com.example"
                artifactId = "lib-android"
                version = "0.0.1-SNAPSHOT"
            }
        }
    }
}

実行

◆ mavenLocalにpublishする

./gradlew publishMavenPublicationToMavenLocal

◆ 任意のフォルダにpublishする

任意のフォルダを指定する差分
afterEvaluate {
    publishing {
        repositories.maven {
            // $projectDir だとモジュールの build 直下。
            // $rootDir なら root モジュール直下
            url = uri("$projectDir/repo")
        }
    }
./gradlew publishMavenPublicationToMavenRepository

./gradlew publish を利用すると余計なファイル群が生成されてしまって原因調査にちょっとハマった、、、。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0