一、为什么要搭建私服nexus
1.本地开发机器上安装nexus
首先声明公司内部是有自己的nexus仓库,但是对上传jar包做了限制,不能畅快的上传自己测试包依赖。于是就自己在本地搭建了一个nexus私服,即可以使用公司nexus私服仓库中的依赖,也可以上传和使用自己的测试包依赖。
2.公司搭建私服作用:
原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。还有就是公司有自己的jar可以发布到私服上等等。
此文章测试搭建的是本地开发机器上安装nexus,无论是本地还是公司私服的搭建,都是一样的。
二、环境搭建
1.首先确定我们的环境安装好maven,jdk等必须的环境
2.这些都准备好之后,去下载最新版本的nexus
下载地址:http://www.sonatype.org/nexus/go
三、解压
将下载的nexus-3.14.0-04-win64.zip解压到自定义目录即可。
四、配置nexus的端口和上下文路径
打开zip解压文件下的 ../nexus-3.14.0-04-win64/nexus-3.14.0-04/etc/nexus-default.properties。
1.如下属性可以自定义修改。
application-host : Nexus服务监听的主机
application-port: Nexus服务监听的端口,
nexus-context-path : Nexus服务的上下文路径
通常可以不做任何修改,但个人习惯于修改 application-host 为0.0.0.0(关于0.0.0.0与127.0.0.1的区别自行检索),我这里修改了端口和host。
五、运行环境配置
打开解压目录下的 ../nexus-3.14.0-04-win64/nexus-3.14.0-04/bin/nexus.vmoptions
可以在下图配置运行时的最大堆、最小堆等,可以根据个人的电脑以及需要修改,默认配置如下。
六、nexus安装
在.../nexus-3.14.0-04-win64/nexus-3.14.0-04/bin 目录下,
必须以管理员身份运行cmd :
- nexus.exe /run 命令可以启动nexus服务(参考官方文档)
- 安装nexus本地服务来启动(推荐使用这种方式,参考官方文档),命令如下所示。
安装nexus服务
PS D:\Nexus\nexus-3.14.0-04\bin> ./nexus.exe /install //安装nexus服务
七、启动/关闭nexus服务
必须以管理员身份运行cmd :
PS D:\Nexus\nexus-3.14.0-04\bin> ./nexus.exe /start //启动nexus服务
PS D:\Nexus\nexus-3.14.0-04\bin> ./nexus.exe /stop //停止nexus服务
八、登录
如果没有做任何端口和上下文路径的修改,直接访问 http://localhost:8081即可。
我这里更改成 http://127.0.0.1:8181
默认的用户名和密码分别是:admin/amdin123
修改密码:
九、nexus仓库类型介绍
默认安装有以下这几个仓库,在控制台也可以修改远程仓库的地址,第三方仓库等。
十、分组仓库的使用
如上图所示,maven-public就我创建的组仓库。以及还创建了3个代理仓库,如下。
配置代理仓库:
1、jcenter仓库:https://jcenter.bintray.com/
创建过程:(其余一样)
2、maven中央仓库:https://repo1.maven.org/maven2/
一般默认已经创建,没有创建就和上面一样1过程。
3、公司内部nexus仓库,这里就不给出了 ---可以选择配置
创建公司的代理
4、最后建立组仓库maven-public,如下。
(1) 将创建的仓库添加进仓库组。
组仓库中包含了公司私服dist、jcenter、maven-central、本地maven-releases,本地maven-snapshots。
修改maven配置setting.xml文件
5.创建好组仓库之后,修改maven配置setting.xml文件,添加maven仓库镜像,如下。
Nexus的仓库对于匿名用户只是只读的。为了能够部署构件,我们还需要再settings.xml中配置验证信息:
<server>
<id>nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
配置远程仓库下载jar地址
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://127.0.0.1:8181/repository/maven-public/</url>
</mirror>
接着修改maven项目中的pom.xml,如下。
6.不配置setting.xml中server就没有权限上传jar,只能下载jar。
这个配置可以下载jar和部署构建
<!--============== 配置nexus私服START =============== -->
<repositories>
<repository>
<id>maven-central</id>
<name>maven-central</name>
<!--仓库地址-->
<url>http://127.0.0.1:8181/repository/maven-central/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<!--插件地址-->
<id>nexus</id>
<url>http://127.0.0.1:8181/repository/maven-public/</url>
</pluginRepository>
</pluginRepositories>
<distributionManagement>
<repository>
<id>nexus</id>
<url>http://127.0.0.1:8181/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<!--上传快照-->
<id>nexus</id>
<name>Nexus Snapshot</name>
<url>http://127.0.0.1:8181/repository/maven-snapshots/</url>
</snapshotRepository>
<site>
<id>nexus</id>
<name>Nexus Sites</name>
<url>dav:http://127.0.0.1:8181/repository/maven-snapshots/</url>
</site>
</distributionManagement>
<!--============== 配置私服End =============== -->
部署构件到私服
(1)Nexus的仓库对于匿名用户只是只读的。为了能够部署构件,我们还需要再settings.xml中配置验证信息:
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
其中,验证信息中service的id应该与POM中repository的id一致
(2)发布到私服的配置
<!-- 配置远程发布到私服,mvn deploy -->
<distributionManagement>
<repository>
<id>releases</id>
<name> Nexus Release Repository </name>
<url> http://127.0.0.1:8081/nexus/content/repositories/releases/ </url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name> Nexus Snapshot Repository </name>
<url> http://127.0.0.1:8081/nexus/content/repositories/snapshots/ </url> </snapshotRepository >
</distributionManagement >
部署命令:
还可以这么配
<distributionManagement>
<repository>
<id>maven-releases</id>
<name>Nexus Release Repository</name>
<url>http://localhost:8082/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://localhost:8082/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
如果是gradle项目,修改init.gradle文件,如下。
uploadArchives {
def nexus_credentials = [userName: "admin", password: "admin123"]
repositories.mavenDeployer {
snapshotRepository(url: "http://127.0.0.1:8082/repository/maven-snapshots/") {
authentication(nexus_credentials)
}
repository(url: "http://127.0.0.1:8082/repository/maven-releases/") {
authentication(nexus_credentials)
}
}
}
十一、上传jar的两种方式:
比如上传这个jar
nexus提供了3rd party、Snapshots、Releases这三个目录存放第三方jar包
(1)登录nexus(默认用户名密码/admin、admin123)
(2)Create repository
解释一下:
proxy:即你可以设置代理,设置了代理之后,在你的nexus中找不到的依赖就会去配置的代理的地址中找 hosted:你可以上传你自己的项目到这里面 group:它可以包含前面两个,是一个聚合体。一般用来给客户一个访问nexus的统一地址。 简单的说,就是你可以上传私有的项目到hosted,以及配置proxy以获取第三方的依赖(比如可以配置中央仓库的地址)。前面两个都 弄好了之后,在通过group聚合给客户提供统一的访问地址。
修改maven安装目录下的 /conf/settings.xml 文件,添加server 节点。如图:
1.方式一
开始上传jar
打开cmd输入修改后的模板
模板
mvn deploy:deploy-file -DgroupId=xxx.xxx -DartifactId=xxx -Dversion=0.0.2 -Dpackaging=jar -Dfile=D:\xxx.jar -Durl=http://xxx.xxx.xxx.xxx:8081/repository/3rdParty/ -DrepositoryId=3rdParty
模板解析:
-DgroupId 为上传的jar的groupId-DartifactId 为上传的jar的artifactId-Dversion 为上传的jar的需要被依赖的时候的版本号-Dpackaging为jar,-Dfile为jar包路径-Durl 为要上传的路径,可以通过以下方式获取到
举个例子:
C:\Users\Administrator>mvn deploy:deploy-file -DgroupId=dist.xdata.product -DartifactId=distexcel -Dversion=1.0.1.RELEASE -Dpackaging=jar -Dfile=I:\maven\repository\dist\xdata\product\distexcel\1.0.1.RELEASE\distexcel-1.0.1.RELEASE.jar -Durl=http://192.168.2.81:8181/repository/3rd-party/ -DrepositoryId=3rd-party
mvn deploy:deploy-file -DgroupId=dist.xdata.product -DartifactId=distexcel -Dversion=1.0.1.RELEASE -Dpackaging=jar -Dfile=I:\maven\repository\dist\xdata\product\distexcel\1.0.1.RELEASE\distexcel-1.0.1.RELEASE.jar -Durl=http://192.168.2.81:8181/repository/3rd-party/ -DrepositoryId=3rd-party
上传成功:
上传后在nexus中查看:
2.上传方式二:
更简单的上传方式
nexus提供了3rd party、Snapshots、Releases这三个目录存放第三方jar包
十二、nexus3.x权限配置
1.去掉“勾”是禁用匿名访权限。
2.角色创建
3.人员创建
4.代理配置
通过该配置可以使得两个Nexus服务器相关联。
(1)配置地址
(2)配置用户