Android创建maven私服以及发布使用

一,下载安装以及环境配置

1,下载安装
win64:
nexus-3.20.1-01-win64.zip
链接:https://pan.baidu.com/s/19THgVb6LzLXJlxzomsvwhw
提取码:9vvg
2,下载解压后,获得两个文件夹
Android创建maven私服以及发布使用_第1张图片
3,配置环境变量
Android创建maven私服以及发布使用_第2张图片

4,快捷键,Win+R–>cmd --nexus.exe/run,运行nexus;
Android创建maven私服以及发布使用_第3张图片
nexus相关命令
安装nexus服务:管理员身份 cmd --> 执行nexus.exe /install
卸载nexus服务:管理员身份 cmd --> 执行nexus.exe /uninstall
启动nexus服务:管理员身份 cmd --> 执行nexus.exe /start
停止nexus服务:管理员身份 cmd --> 执行nexus.exe /stop
查看nexus服务:管理员身份 cmd --> 执行nexus.exe /status
注意:后台运行这种方式,nexus服务只要安装一次,安装后默认随系统启动而启动,无需要每次运行 自动命名!!!

5,修改端口号
默认端口号:8081,可修改端口号,打开安装目录下etc文件,然后找到nexus-default.properties文件可以查看修改端口号
Android创建maven私服以及发布使用_第4张图片

我修改端口号为8080;重新执行nexus.exe/runAndroid创建maven私服以及发布使用_第5张图片访问浏览器,访问http://localhost:8080/
点击登录,这里用户名默认是admin,密码在:…\sonatype-work\nexus3下的admin_password文件下;
Android创建maven私服以及发布使用_第6张图片
登录以后我们会出现我们点击下一步next
Android创建maven私服以及发布使用_第7张图片
然后系统会让我们修改密码,修改密码完后我们工作目录的admin_password就会自动删除
Android创建maven私服以及发布使用_第8张图片
然后会出现是否允许匿名访问:
点击Next --> 选择“Enable anonymous access” 如下:
Android创建maven私服以及发布使用_第9张图片
点击next,完成首次登录。

二,创建Maven私服

1,登录后切换到齿轮,如下图
Android创建maven私服以及发布使用_第10张图片
2,点击红框齿轮 -->点击Repository -->Repositories -->Create repositories
Android创建maven私服以及发布使用_第11张图片
Android创建maven私服以及发布使用_第12张图片

Android创建maven私服以及发布使用_第13张图片
Android创建maven私服以及发布使用_第14张图片

复制URL,至此,Nexus 的私服仓库已经建立完成,

简单介绍下私服类型如下
私服Nexus的仓库类型有:proxy,hosted,group三种,
Android创建maven私服以及发布使用_第15张图片
1,group类型的仓库【maven-public】管理着proxy和hosted类型的仓库。

  • group类型的仓库【maven-public】不会存储实物文件,不会储存依赖和jar包,其实就是一个有点像虚拟的仓库,一个中转站一样的。外界的开发电脑通过连接这个group类型的【maven-public】仓库,从而驱动proxyl类型的【maven-central】仓库去中央仓库下载依赖和构件。以及通过group类型的仓库【maven-public】去上传自己开发的jar包到hosted类型的仓库【maven-releases】或【maven-snapshots】
  • 如下图也能看出【maven-public】仓库是管理着【maven-central】【maven-releases】【maven-snapshots】这三个仓库的。

Android创建maven私服以及发布使用_第16张图片

  • 如上图在Member repositories成员仓库中,这些仓库是有先后顺序的,排在前面的优先。也就是说,在上图配置下,开发者的电脑连接到私服,若开发者在pom.xml文件中要添加新的依赖,私服会首先在自己的【maven-releases】仓库去查找,若找不到再去【maven-snapshots】仓库查找,若还找不到才会去【maven-central】这个仓库,而【maven-central】仓库其实就是去maven的远程中央仓库下载。

2.hosted类型的仓库,也就是常说的宿主仓库,有【maven-releases】和【maven-snapshots】两个。

  • 这两个仓库是可以储存实物文件的。
  • 这两个仓库是储存本公司自己的程序员开发的jar包的。开发者可以把自己开发的jar包推送到私服的这两个仓库中,其他的开发者如果想要用这个jar包,就可以在私服的这两个仓库中去下载(当然自己公司开发的jar包,远程中央仓库肯定不会有,也只能是存在自己公司的私服中)。
  • 其他开发者下载自己公司开发的jar包,也是通过上面所述,连接唯一接口【maven-public】仓库,然后这个gruop类型的仓库里面有管理releasese(正式版)和snapshots(临时版)顺序,依照顺序下载到对应开发者的电脑的本地maven仓库中。
  • 在创建maven项目时,若创建时项目的版本后缀有-SNAPSHOT,则在上传jar包到私服时,会自动上传到【maven-snapshots】库中,而不会上传到【maven-releases】库里。同理,若版本后缀没有“-SNAPSHOT”,则会上传到正式版【maven-releases】库。这种行为操作其实就是Nexus的一种“约定俗成”吧。

3.proxy类型的仓库【maven-central】,先看图。
Android创建maven私服以及发布使用_第17张图片

  • 这个仓库比较特别,它有两个属性,一方面它可以连接远程中央仓库去下载依赖,另一方面是这个仓库也是可以储存实物文件,也是一个实实在在的仓库。
  • 上图Remote storage配置项https://repo1.maven.org/maven2/,这个就是maven传统的中央仓库,又大又全面又最新(我喜欢用这个),当然我们还有国内的一些镜像仓库源,如阿里云镜像仓库等。
  • 这个仓库就是我们的私服去连接maven远程中央仓库,从远程中央仓库下载依赖到私服的这个【maven-central】库中,并会储存在私服的【maven-central】库中,私服再给开发者电脑的本地maven仓库一份。

三,Android Gradle配置发布项目到maven

第一种:使用gradle自动发布
在需要发布的module的build.gradle中加入如下代码,

apply plugin: 'maven'

uploadArchives {
    configuration = configurations.archives
    repositories {
        mavenDeployer {
            // 仓库路径(只能是hosted仓库)
            repository(url: 'http://localhost:8080/repository/homeprint-host/') {
                // 你 Nexus 的账户密码
                authentication(userName: 'admin', password: 'admin123')
            }
            pom.project {
                version '1.0.1'
                artifactId 'homeprint-common'
                groupId 'com.homeprint.lib'
                description 'xxxxxx'
            }
        }
    }
}


然后在右侧的双击下图中的uploadArchives,即可发布上传
Android创建maven私服以及发布使用_第18张图片

上传完成后,可以在仓库中看到发布的项目
Android创建maven私服以及发布使用_第19张图片
module中使用发布的项目
在工程的build.gradle中添加maven地址

allprojects {
    repositories {
        maven { url 'http://localhost:8080/repository/homeprint-host/' }
    }
 }

在module的build.gradle中添加依赖

  implementation 'com.homeprint.lib:homeprint-common:1.0.0'

你可能感兴趣的:(Android,maven)