一、Nexus

1、官网下载地址

前往 Nexus 官网 下载安装包,并解压存放到自己希望保存的目录。

2、已下载可用链接

Android Maven 私有库(Nexus) - 图1

4、登录

使用用户名 admin 和默认密码 admin123 登录,即可创建和管理用户。新版默认密码已改,在
初始密码保存在nexus安装目录下的sonatype-workadmin.password文件中,打开文件可以看到如下内容:
Android Maven 私有库(Nexus) - 图2
admin.password
注:内容即为密码明文,而非加密后的结果,直接复制即可。
第一次输入账号密码后,会提示修改初始密码
参考链接:https://www.cnblogs.com/wbl001/p/11154828.html

5、创建仓库

在浏览器打开http://localhost:8081,登录以后即可看到管理页面
Android Maven 私有库(Nexus) - 图3
这里的仓库分了四种类型:
  hosted(宿主仓库):用来部署自己,第三方或者公共仓库的构件
  proxy(代理仓库):代理远程仓库
  virtual(虚拟仓库):默认提供了一个 Central M1虚拟仓库 用来将maven 2适配为maven 1
  group(仓库组):统一管理多个仓库
  名词解释:
  Public Repositories: 仓库组
  3rd party: 无法从公共仓库获得的第三方发布版本的构件仓库
  Apache Snapshots: 用了代理ApacheMaven仓库快照版本的构件仓库
  Central:
用来代理maven中央仓库中发布版本构件的仓库
  Central M1 shadow: 用于提供中央仓库中M1格式的发布版本的构件镜像仓库
  Codehaus Snapshots: 用来代理
  CodehausMaven 仓库的快照版本构件的仓库
  Releases:
用来部署管理内部的发布版本构件的宿主类型仓库
  Snapshots:用来部署管理内部的快照版本构件的宿主类型仓库

仓库类型

Android Maven 私有库(Nexus) - 图4
创建按钮
Android Maven 私有库(Nexus) - 图5
选择仓库格式和类型

宿主仓库配置信息

Android Maven 私有库(Nexus) - 图6
宿主仓库配置信息

代理仓库配置信息

Android Maven 私有库(Nexus) - 图7

仓库组配置信息

Android Maven 私有库(Nexus) - 图8

创建示例

image.png
image.png
选择创建一个hosted仓库。policy那里选择Allow redeploy。在Browse就可以看到刚刚创建的仓库toastutils。
image.png

6、上传仓库

新建 testutils module,并新建 Utils 测试类。
Android Maven 私有库(Nexus) - 图12
在项目的 build.gradle 中加入 mavenLocal

  1. allprojects {
  2. repositories {
  3. google()
  4. jcenter()
  5. //需要添加的
  6. mavenLocal()
  7. }
  8. }

到 testutils 的 build.gradle 中添加 maven 信息

  1. apply plugin: 'com.android.library'
  2. //需要添加的
  3. apply plugin: 'maven'
  4. //需要添加的
  5. uploadArchives {
  6. repositories.mavenDeployer {
  7. repository(url:"http://127.0.0.1:8081/repository/test/") {
  8. authentication(userName:"test", password:"123456")
  9. }
  10. pom.version="1.0"
  11. pom.artifactId="testutils"
  12. pom.groupId="com.test"
  13. }
  14. }
  15. android {
  16. compileSdkVersion 28
  17. defaultConfig {
  18. minSdkVersion 21
  19. targetSdkVersion 28
  20. versionCode 1
  21. versionName "1.0"
  22. testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
  23. }
  24. buildTypes {
  25. release {
  26. minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  27. }
  28. }
  29. }
  30. dependencies {
  31. implementation fileTree(dir: 'libs', include: ['*.jar'])
  32. implementation 'com.android.support:appcompat-v7:28.0.0'
  33. testImplementation 'junit:junit:4.12'
  34. androidTestImplementation 'com.android.support.test:runner:1.0.2'
  35. androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
  36. }

注:
repository 的 url 可访问 nexus 进行复制
Android Maven 私有库(Nexus) - 图13
sync 完 gradle 后,打开 gradle 选项,找到 upload,进行上传。
Android Maven 私有库(Nexus) - 图14
上传成功后,即可前往 nexus 查看。
Android Maven 私有库(Nexus) - 图15


也可以将配置都放在根目录gradle.properties里面,示例如下:

  1. #Maven仓库的URL
  2. MAVEN_REPO_RELEASE_URL=http://localhost:8081/repository/toastutils/
  3. MAVEN_REPO_SNAPSHOT_URL=http://localhost:8081/repository/toastutils/
  4. #对应maven的GroupId的值
  5. GROUP =toastutils
  6. #登录nexus ossde的用户名
  7. NEXUS_USERNAME=
  8. #登录nexus oss的密码
  9. NEXUS_PASSWORD=
  10. # groupid (最终你引用时的名字)
  11. GROUP_ID =toastutils
  12. # type
  13. TYPE = aar
  14. # description
  15. DESCRIPTION = toast_utils

引入要上传的modul的gradle:

  1. apply plugin: 'maven'
  2. uploadArchives {
  3. configuration = configurations.archives
  4. repositories {
  5. mavenDeployer {
  6. snapshotRepository(url: MAVEN_REPO_SNAPSHOT_URL) {
  7. authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
  8. }
  9. repository(url: MAVEN_REPO_RELEASE_URL) {
  10. authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
  11. }
  12. pom.project {
  13. //版本,有更新时修改版本号,再上传
  14. version '1.0.6'
  15. //名字
  16. artifactId 'toastutils'
  17. groupId GROUP_ID
  18. packaging TYPE
  19. description DESCRIPTION
  20. }
  21. }
  22. }
  23. }

7、使用私有库

在项目的 build.gradle 中加入私有 Maven 库

  1. allprojects {
  2. repositories {
  3. google()
  4. jcenter()
  5. //需要添加的
  6. maven { url "http://127.0.0.1:8081/repository/test/" }
  7. }
  8. }

在需要引用私有库的 module 的 build.gradle 中引用私有库

  1. implementation 'com.test:testutils:1.0'

注:不是 com.test.testutils 而是 com.test:testutils
sync 完 gradle 后,即可在 module 中引用
Android Maven 私有库(Nexus) - 图16
至此,我们完成了私有 Maven 库的搭建和使用。

参考

demo
maven—-9使用Nexus创建私服
用Maven搭建私有化Android管理库
Android Maven 私有库