Windows 下安装 Nexus3.x 搭建 Maven 仓库
使用 android studio 或者 idea 开发应用时,除了可以依赖本地的库之外,还可以依赖网上(公有 maven 服务器、私有 maven 服务器、jcenter 等)。如果是依赖本地的,必须要将依赖的 module 和主工程放在一个 project 里面,这就导致了每个 project 都需要配置这些依赖关系,如果是公司内多个工程依赖同一个公司内部的控件,控件有更新时,同步非常麻烦,但公司内部的控件不可能部署到公有 maven 服务器上,所以有必要搭建一个局域网内的 maven 服务器,方便管理公司内部的公共库。
Nexus
3.x 版本只能运行在 JVM8 及以上
本地内部仓库在本地构建 nexus 私服的好处:
- 加速构建、稳定;
- 节省带宽、节省中央 maven 仓库的带宽;
- 控制和审计;
- 能够部署第三方构件;
- 可以建立本地内部仓库、可以建立公共仓库
下载了 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/
创建代码仓库
默认登录用户名密码 (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 创建仓库
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 进行上传
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 进行上传
查看
项目引用
配置 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论