1.安装Nexus
a.zip包下载链接:https://www.sonatype.com/download-oss-sonatype
下载这个包我是费了九牛二虎之力的,130多M的手机流量,坑!!!
提供给大家一个最新包的百度网盘链接吧:链接:https://pan.baidu.com/s/1geDoUYn 密码:2gtn
由于本人习惯于windows系统,读者可以视自己的情况而定。
b.解压到某一个目录(自定义)
里面会存在俩个目录结构,看文件名好像tomcat的结构,不多说,后面上传了自己的model后看变化
c.配置下默认参数吧
默认是8081端口,顺带瞄了一眼,采用的Jetty服务,哈哈
d.环境变量就配置解压后的根目录吧,其实不配置也行
e.以管理员权限安装运行nexus吧
我在这里掉坑里面了,大家需要注意了,虽然你Starting service 'nexus'. 但是这个服务不一定马上起来,要等下1分钟左右吧,害的我在这里一直重装启动,重装启动......
2.提供俩个配置文件,往自己的model project根目录下面一丢完事
a.gradle.properties
# 包的坐标信息
GROUP_ID=com.xxx.mylibrary
ARTIFACT_ID=mylibrary
VERSION=1.1.2
PACKAGE_TYPE=aar
DESCRIPTION=this is mylibrary
RELEASE_URL=http://127.0.0.1:8081/repository/maven-releases/
SNAPSHOT_URL=http://127.0.0.1:8081/repository/maven-snapshots/
# NEXUS用户名和密码
NEXUS_USER=xxx
NEXUS_PWD=xxx
b.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 {
//为Pom文件做数字签名
beforeDeployment {
MavenDeployment deployment -> signing.signPom(deployment)
}
pom.project {
version = VERSION
artifactId = ARTIFACT_ID
groupId = GROUP_ID
packaging = PACKAGE_TYPE
description = DESCRIPTION
}
repository(url: getRepositoryUrl()) {
authentication(userName: NEXUS_USER, password: NEXUS_PWD) // maven授权信息
}
}
}
}
// 进行数字签名
signing {
// 当 发布版本 & 存在"uploadArchives"任务时,才执行
required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
sign configurations.archives
}
// 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
}
c.当然在你model project的build.gradle 文件里面还是得依赖下的,不然怎么生效呢
一句话的事,就直接上码:
apply plugin: 'com.android.library'
apply from: 'maven_push.gradle'
d.可以去上传了
3.怎么用呢?
在主工程的root build.gradle中配置下maven仓库的地址:
buildscript {
repositories {
jcenter()
mavenCentral()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
google()
//重点下面俩行拉
maven { url "http://127.0.0.1:8081/repository/maven-releases/" }
maven { url "http://127.0.0.1:8081/repository/maven-snapshots/" }
}
}
在工程build.gradle里面:
compile 'com.xxx.xx:artifaceid:1.1.0'
其实组成结构就是:compile 'groupid:artifaceid:version'