maven私服搭建

maven是什么

简单来说,maven就是一款依赖管理工具,我们用它来管理java项目的各种依赖。

maven私服又是什么

可以用一张图来大致描述maven的组织关系:
在这里插入图片描述
可以看到,maven私服只是maven体系结构中的一小部分,但是对于我们开发者来说却是非常重要。

maven私服的作用

  1. 节省外网带宽。因为maven私服是搭建在局域网,即使没有连接外网我们也能使用,减少运维成本。
  2. 加速构建过程。通常局域网的下载速度肯定是大于外网,所以能节约大量构建时间。
  3. 缓存第三方构件。我们可以将中央仓库中的一些依赖包部署在maven私服中,这样当我们需要引用第三方的依赖的时候就可以直接在私服上下载,而私服会帮我们缓存已经下载过的依赖。这样,当外网不可用的时候,我们依然可以使用三方依赖。
  4. 提高稳定性。毕竟别人的仓库肯定是不可控的,而自己的仓库是可控的。
  5. 降低中央仓库负荷。我们可以按组织或按部门去搭建自己的私服,这样就能降低中央仓库的负荷,提高稳定性。

maven私服如何搭建

废话了这么多,我们看下具体如何搭建自己的maven私服。

  1. 下载Nexus
    Nexus Repository Manager OSS 3.x下载windows版本即可。
  2. 解压启动
    找到解压目录,cmd进入,然输入nexus.exe /install执行。如果已经安装过可以输入nexus.exe /run 启动。
    在这里插入图片描述
    启动成功
    在这里插入图片描述
    当我们在浏览器输入:http://localhost:8081/就可以看到启动界面了
    在这里插入图片描述
    至此,我们的完成了安装和启动。
  3. 登录使用
    点击右侧的sign in 进行登录,账号admin ,此时需注意nexus3.17后admin的密码已改为随机密码,登录框上面会提示你密码的保存位置,只要打开复制过来即可。登录后的页面:
    在这里插入图片描述
  4. 创建maven仓库
    在这里插入图片描述
    在这里插入图片描述
    这里我们选择hosted类型。(grou聚合仓库,是将多个仓库聚合到一个group,统一指定聚合仓库的仓库地址可以获取到同一group下的所有包。hosted宿主仓库,我们管理本地依赖的仓库。proxy 远程代理仓库,当用户向 proxy 类型仓库请求下载一个依赖构件时,就会先在自己的库里查找,如果找不到的话,就会从设置的远程仓库下载到自己的库里,然后返回给用户,缓存作用)
    在这里插入图片描述
    需要注意的是,我们平时开发一般都会创建两个仓库,一个是snapshot类型,一个是release类型,snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本。其实我们可以直接使用系统创建好的仓库,这里我们直接使用group类型的maven-public仓库
    在这里插入图片描述
    它里面已经自动为我们包含了所需要的几个仓库。
  5. 上传到仓库
    项目根目录的gradle添加代码
maven {                                                                             
     url 'http://localhost:8081/repository/maven-public/'                            
         credentials {                                                                   
            username 'admin'                                                            
           password 'admin123'                                                         
       }                                                                               
}                                                                                   

在gradle.properties中加入如下代码

NEXUS_REPOSITORY_URL_SNAPSHOT=http://localhost:8081/repository/maven-snapshots/
NEXUS_REPOSITORY_URL_RELEASE=http://localhost:8081/repository/maven-releases/
POM_GROUPID=com.zy.lib
POM_PACKAGING=aar
NEXUS_USERNAME=admin
NEXUS_PASSWORD=admin123

找到需要上传的库的gradle,添加代码如下

apply plugin: 'com.android.library'
apply plugin: 'maven'
def pomName = this.getName()
def pomVersion = '1.0.1-SNAPSHOT'//snapshot版本必须带上-SNAPSHOT
def pomArtifactId = 'lib_audio'
def pomDescription = 'the audio libray for all projects'

static def isReleaseBuild(def name) {
    return name.toUpperCase().contains("SNAPSHOT") == false
}
def getRepositoryUrl(def name) {
    return isReleaseBuild(name) ? NEXUS_REPOSITORY_URL_RELEASE : NEXUS_REPOSITORY_URL_SNAPSHOT
}
android {
    compileSdkVersion this.rootProject.android.compileSdkVersion

    defaultConfig {
        minSdkVersion this.rootProject.android.minSdkVersion
        targetSdkVersion this.rootProject.android.targetSdkVersion
        versionCode this.rootProject.android.versionCode
        versionName this.rootProject.android.versionName
        multiDexEnabled this.rootProject.android.multiDexEnabled
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}
uploadArchives{
    repositories{
        mavenDeployer{
            repository(url:getRepositoryUrl(pomVersion)){
                authentication(userName:NEXUS_USERNAME,
                password:NEXUS_PASSWORD)
            }
            pom.project{
                name pomName
                version pomVersion
                description pomDescription
                artifactId pomArtifactId
                groupId POM_GROUPID
                packaging POM_PACKAGING
            }
        }
    }
}

同步之后点击uploadArchives即可
在这里插入图片描述
此时,我们在maven仓库里就可以看到我们上传的jar包
在这里插入图片描述

  1. 引用
    在这里插入图片描述
    如果是release可以参照groupId:artifactId:version引用即可。
    在这里插入图片描述
    最后注意:如果发布的是snapshot版本号后面需要加上-SNAPSHOT。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值