Android Studio上传项目到Maven仓库

2017-01-14 10:23:00来源:http://www.jianshu.com/p/57f8af15ef9c作者:键盘男人点击

第七城市



前期准备

安装JDK环境。用Nexus新建Release或Snapshot 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仓库》




第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台