Android Studio上傳項目到Maven倉庫

前期準備

安裝JDK環境。用Nexus新建ReleaseSnapshot maven倉庫。

參考《使用Nexus搭建maven私有倉庫》


Android Studio

創建project

包名com.maven.studio

create project

創建library

包名com.maven.studio.library

new library

寫代碼

新建GradleTest

package com.maven.studio.library;

public class GradleTest {
    public void display(){
        System.out.println("gradle test");
    }
}

新建gradle.properties

library module 下新建gradle.properties,并配置:

VERSION=1.0
GROUP_ID=com.maven.studo.library
ARTIFACT_ID=test

RELEASE_URL=http://192.168.86.130:8081/repository/{release倉庫名}/
SNAPSHOT_URL=http://192.168.86.130:8081/repository/{snapshot倉庫名}/

NAME=admin
PASSWORD=admin123

當然在工程目錄下的gradle.properties配置,也是可以的。192.168.86.130是maven倉庫ip地址。

新建gradle上傳腳本

在library module下,新建maven_push.gradle

apply plugin: 'maven'
apply plugin: 'signing'

configurations {
    deployerJars
}

repositories {
    mavenCentral()
}

// 判斷版本是Release or Snapshots
def isReleaseBuild() {
    return !VERSION.contains("SNAPSHOT");
}

// 獲取倉庫url
def getRepositoryUrl() {
    return isReleaseBuild() ? RELEASE_URL : SNAPSHOT_URL;
}

uploadArchives {
    repositories {
        mavenDeployer {
            beforeDeployment {
                MavenDeployment deployment -> signing.signPom(deployment)
            }

            pom.version = VERSION
            pom.artifactId = ARTIFACT_ID
            pom.groupId = GROUP_ID

            repository(url: getRepositoryUrl()) {
                authentication(userName: NAME, password: PASSWORD) // maven授權信息
            }
        }
    }
}

// 進行數字簽名
signing {
    // 當 發布版本 & 存在"uploadArchives"任務時,才執行
    required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
    sign configurations.archives
}

snapshot版是不需要進行數字簽名的,但release必須數字簽名。

更多任務

例如對工程生成javadoc.jar、上傳source.jar,只要在maven_push.gradle加上:

// type顯示指定任務類型或任務, 這里指定要執行Javadoc這個task,這個task在gradle中已經定義
task androidJavadocs(type: Javadoc) {
    // 設置源碼所在的位置
    source = android.sourceSets.main.java.sourceFiles
}

// 生成javadoc.jar
task androidJavadocsJar(type: Jar) {
    // 指定文檔名稱
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
}

// 生成sources.jar
task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.sourceFiles
}

// 產生相關配置文件的任務
artifacts {
    archives androidSourcesJar
    archives androidJavadocsJar
}

導入上傳腳本

然后在library/build.gradle導入maven_push.gradle腳本:

apply from: 'maven_push.gradle'

執行gradle上傳任務

然后Sync gradle一下,會發現Gradle任務窗口,多了upload任務快,里面有uploadArchives task. 右鍵->Run雙擊

uploadArchives
deploy

顯示BUILD SUCCESS后,打開nexus界面-> component

upload success

com.maven.studio.library上傳成功!


Gradle引入依賴

gradle配置

修改工程根目錄build.gradle

allprojects {
    repositories {
        jcenter()

        // maven { url "http://192.168.86.130:8081/repository/{release倉庫名}/" }
        maven { url "http://192.168.86.130:8081/repository/{snapshot倉庫名}/" }
    }
}

修改module下的build.gradle

dependencies {
    ...

    // groupId : artifactId : version
    compile 'com.maven.studio.library:test:1.0-SNAPSHOT'
}

Sync gradle同步一下maven倉庫,如果gradle build完成,證明成功引入依賴了。

寫代碼

MainActivity

成功引入com.maven.studio.library依賴!


相關閱讀:

《InteliJ上傳Java項目到Maven倉庫》
《發布Android Library到Bintray、JCenter》

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容