美文网首页
使用Nexus搭建本地Maven仓库

使用Nexus搭建本地Maven仓库

作者: ChineseBoy | 来源:发表于2017-12-25 17:07 被阅读19次
    1.安装Nexus
    a.zip包下载链接:https://www.sonatype.com/download-oss-sonatype

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

    image.png
    由于本人习惯于windows系统,读者可以视自己的情况而定。
    b.解压到某一个目录(自定义)
    image.png

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

    c.配置下默认参数吧
    image.png
    image.png

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

    d.环境变量就配置解压后的根目录吧,其实不配置也行
    image.png
    e.以管理员权限安装运行nexus吧
    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.可以去上传了
    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仓库

          本文链接:https://www.haomeiwen.com/subject/beglgxtx.html