前期准备
安装JDK环境。用Nexus新建Release或Snapshot maven仓库。
Android Studio
创建project
包名com.maven.studio
创建library
包名com.maven.studio.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 或 双击
显示BUILD SUCCESS
后,打开nexus界面-> component
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
完成,证明成功引入依赖了。
写代码
成功引入com.maven.studio.library
依赖!
相关阅读:
《InteliJ上传Java项目到Maven仓库》
《发布Android Library到Bintray、JCenter》