使用Nexus搭建本地Maven仓库

1.安装Nexus
a.zip包下载链接:https://www.sonatype.com/download-oss-sonatype

下载这个包我是费了九牛二虎之力的,130多M的手机流量,坑!!!
提供给大家一个最新包的百度网盘链接吧:链接:https://pan.baidu.com/s/1geDoUYn 密码:2gtn

使用Nexus搭建本地Maven仓库_第1张图片
image.png

由于本人习惯于windows系统,读者可以视自己的情况而定。

b.解压到某一个目录(自定义)
使用Nexus搭建本地Maven仓库_第2张图片
image.png

里面会存在俩个目录结构,看文件名好像tomcat的结构,不多说,后面上传了自己的model后看变化

c.配置下默认参数吧
使用Nexus搭建本地Maven仓库_第3张图片
image.png

使用Nexus搭建本地Maven仓库_第4张图片
image.png

默认是8081端口,顺带瞄了一眼,采用的Jetty服务,哈哈

d.环境变量就配置解压后的根目录吧,其实不配置也行
image.png
e.以管理员权限安装运行nexus吧
使用Nexus搭建本地Maven仓库_第5张图片
image.png

我在这里掉坑里面了,大家需要注意了,虽然你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.可以去上传了
使用Nexus搭建本地Maven仓库_第6张图片
image.png
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'

你可能感兴趣的:(使用Nexus搭建本地Maven仓库)