Android Studio上传项目到Maven仓库

《Android Studio上传项目到Maven仓库》

前期准备

安装JDK环境。用Nexus新建ReleaseSnapshot maven仓库。

参考《使用Nexus搭建maven私有仓库》

Android Studio

创建project

包名com.maven.studio

《Android Studio上传项目到Maven仓库》 create project

创建library

包名com.maven.studio.library

《Android Studio上传项目到Maven仓库》 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双击

《Android Studio上传项目到Maven仓库》 uploadArchives
《Android Studio上传项目到Maven仓库》 deploy

显示BUILD SUCCESS后,打开nexus界面-> component

《Android Studio上传项目到Maven仓库》 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完成,证明成功引入依赖了。

写代码

《Android Studio上传项目到Maven仓库》 MainActivity

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

相关阅读:

《InteliJ上传Java项目到Maven仓库》
《发布Android Library到Bintray、JCenter》

    原文作者:键盘男
    原文地址: https://www.jianshu.com/p/57f8af15ef9c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞