Windows 下安装 Nexus3.x 搭建 Maven 仓库

发布于 2024-06-06 10:31:29 字数 5544 浏览 21 评论 0

使用 android studio 或者 idea 开发应用时,除了可以依赖本地的库之外,还可以依赖网上(公有 maven 服务器、私有 maven 服务器、jcenter 等)。如果是依赖本地的,必须要将依赖的 module 和主工程放在一个 project 里面,这就导致了每个 project 都需要配置这些依赖关系,如果是公司内多个工程依赖同一个公司内部的控件,控件有更新时,同步非常麻烦,但公司内部的控件不可能部署到公有 maven 服务器上,所以有必要搭建一个局域网内的 maven 服务器,方便管理公司内部的公共库。

Nexus

3.x 版本只能运行在 JVM8 及以上

本地内部仓库在本地构建 nexus 私服的好处:

  1. 加速构建、稳定;
  2. 节省带宽、节省中央 maven 仓库的带宽;
  3. 控制和审计;
  4. 能够部署第三方构件;
  5. 可以建立本地内部仓库、可以建立公共仓库

image

Nexus 下载

image

下载了 3.x - OS X 的源码包之后,解压文件得到两个目录:
nexus-xxx:该目录包含了 Nexus 运行时所需要的文件,如启动脚本等。
sonatype-work:该目录包含了 Nexus 生成的配置文件,日志文件,仓库文件等。

运行 cmd 到 nexus-xxx\bin 文件夹 输入

nexus /run
//其他命令
start:在后台启动服务,不在界面上打印任何启动或者运行时信息。
run:启动服务,但是在界面上打印出启动信息以及运行时信息以及日志信息。
stop:关闭服务
status:查看 nexus 运行状态
restart:重启服务
force-reload:强制重载一遍配置文件,然后重启服务

安装为服务

nexus.exe /install <optional-service-name> #安装
nexus.exe /start <optional-service-name> #开始
nexus.exe /stop <optional-service-name> #结束
nexus.exe /uninstall <optional-service-name> #卸载
#其中<optional-service-name>为服务的名称,可自定义

浏览器访问 http://localhost:8081/

image

创建代码仓库

默认登录用户名密码 (admin admin123)

Nexus 的主要的仓库类型:

  • hosted(宿主):宿主仓库主要用于存放项目部署的构件、或者第三方构件用于提供下载。
  • proxy(代理):代理仓库就是对远程仓库的一种代理,从远程仓库下载构件和插件然后缓存在 Nexus 仓库中
  • group(仓库组):对我们已经配置完的仓库的一种组合策略。

Nexus 内置的仓库就已经包含了主要的仓库类型:

  • maven-central:代理中央仓库、策略为 Release、只会下载和缓存中央仓库中的发布版本构件。
  • maven-releases:策略为 Release 的宿主仓库、用来部署组织内部的发布版本内容。
  • maven-snapshots:策略为 Snapshot 的宿主仓库、用来部署组织内部的快照版本内容。
  • maven-public:该仓库将上述所有策略为 Release 的仓库聚合并通过一致的地址提供服务。
  • nuget-hosted:用来部署 nuget 构件的宿主仓库
  • nuget.org-proxy:代理 nuget 远程仓库,下载和缓冲 nuget 构件。
  • nuget-group:该仓库组将 nuget-hosted 与 nuget.org-proxy 仓库聚合并通过一致的地址提供服务。
  • maven-public:该仓库组将 maven-central,maven-releases 与 maven-snapshots 仓库聚合并通过一致的地址提供服务。

点击 Repository 下 Repositories 创建仓库

image

Gradle 打包上传

idea

新建 gradle 项目,在 build.gragle 中编写配置

group 'com.example.mylibrary'
version '1.0-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'maven'

sourceCompatibility = 1.8

uploadArchives {
repositories.mavenDeployer {
repository(url:"http://192.168.31.6:8081/repository/colorfulworld/") {
authentication(userName:"admin", password:"admin123")
}
pom.version="1.0"
pom.artifactId="javaUtils"
pom.groupId="com.example"
}
}

repositories {
mavenCentral()
}

dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}

运行 uploadArchives 进行上传

image

android studio

新建 app 项目,然后新建库(android.library 或者 java.library),在 build.gragle 中编写配置

apply plugin: 'com.android.library'
apply plugin: 'maven'

//...

uploadArchives {
repositories {
mavenDeployer {
repository(url: "http://192.168.31.6:8081/repository/colorfulworld/") {
authentication(userName: "admin", password: "admin123")
}

pom.groupId = 'com.example.mylibrary'
pom.artifactId = 'utils'
pom.version = '0.0.1'

pom.project {
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
}
}
}
}

运行 uploadArchives 进行上传

image

查看

image

项目引用

配置 Project 的 build.gradle 文件:

allprojects {
repositories {
maven { url "http://192.168.31.6:8081/repository/colorfulworld/" }
google()
jcenter()
}
}

然后在 module 的 build.gradle 中添加依赖即可:

//compile 'com.example.mylibrary:utils:0.0.1'
implementation 'com.example.mylibrary:utils:0.0.1'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

橙幽之幻

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

我们的影子

文章 0 评论 0

素年丶

文章 0 评论 0

南笙

文章 0 评论 0

18215568913

文章 0 评论 0

qq_xk7Ean

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文