在项目开发过程中,我们从原有的使用eclipse自己做项目jar包的管理到使用Maven来帮助我们管理jar包。但是有一些jar包可能是自己公司内部开发编译的,那么如何更优雅的让公司同事使用到内部开发的jar包呢?一个方案是搭建一个局域网下的Maven私服,将内部的jar放到私服上,同一个局域网下的开发人员即可以获取到jar包了。
解压Nexus
sudo tar -xzvf nexus-3.18.0-01-unix.tar.gz
1.nexus-3.18.0-01 ===> nexus的核心文件
2.sonatype-work ===> maven下载jar存放地址
进入到nexus的bin目录
cd /home/nis/software/nexus/nexus-3.18.0-01/bin
查看nexus可以使用的命令
./nexus --help
PS:注意点,启动Nexus官方建议不使用root用户。
## 创建一个nis用户
[root@localhost bin]# useradd nis
## 将文件夹所属改为nexus
[root@localhost local]# chown nis:nis -R nexus-3.18.0-01/
vim nexus.rc
## 修改启动用户为nis
run_as_user="nis"
修改文件的权限
sudo chown nis:nis -R sonatype-work/
./nexus run &
如果使用以上方法来启动nexus则会发现不能使用之前的./nexus stop ./nexus restart等命令。
尴尬得发现不能使用“./nexus stop”命令停止服务。
发现虽然状态是stopped的但是访问网页还是能够访问到。
迫不得已只能通过以下命令查询nexus服务的进程,然后通过kill命令结束该nexus服务
## 查询nexus服务的进程
ps -ef | grep nexus
## 结束某个进程
kill -9 [进程号]
./nexus start
使用命令启动,但是启动时间会比较长,界面会一直停留在这个画面
我们直接到浏览器使用ip+8081端口访问,如果访问失败的话过一会继续刷新。
But~~~~~~~~ 刷新了大半天也没能刷新出来,怀疑是否是由于防火墙的问题
## 查看防火墙状态
sudo service firewalld status
## 关闭防火墙
sudo service firewalld stop
# 给防火墙添加8081的端口
sudo firewall-cmd --add-port=8081/tcp
# 列出防火墙配置暴露的端口
sudo firewall-cmd --list-ports
# 移除防火墙的端口
sudo firewall-cmd --remove-port=8081/tcp
在3.7之后登录的密码变成了动态生成,在提示框中我们可以看到动态生成的密码在哪里
/home/nis/software/nexus/sonatype-work/nexus3/admin.password
按照路径进入到相关目录
使用cat命令获取密码
登陆之后提示需要重新设置密码
重新设置密码之后即可登录;
首先在本地仓库中找,如果没命中,那么就找远程私服;远程私服的查找规则同样是先找host属性的私有库,然后再去找proxy属性的远程仓库;可以配置多个proxy;
阿里云私服地址:http://maven.aliyun.com/nexus/content/groups/public/
<mirror>
<id>nexusid>
<mirrorOf>*mirrorOf>
<name>nexus mavenname>
<url>http://192.168.2.66:8081/repository/maven-public/url>
mirror>
在maven的setting.xml文件中配置私服配置,这种方式配置后所有本地使用该配置的maven项目的pom文件都无需配置私服下载相关配置。
<profiles>
<profile>
<id>mycofid>
<repositories>
<repository>
<id>nexusid>
<url>http://192.168.2.66:8081/repository/maven-public/url>
<releases>
<enabled>trueenabled>
releases>
<snapshots>
<enabled>trueenabled>
snapshots>
repository>
repositories>
<pluginRepositories>
<pluginRepository>
<id>nexusid>
<url>http://192.168.2.66:8081/repository/maven-public/url>
<releases>
<enabled>trueenabled>
releases>
<snapshots>
<enabled>trueenabled>
snapshots>
pluginRepository>
pluginRepositories>
profile>
profiles>
激活使用上面的配置
<activeProfiles>
<activeProfile>mycofactiveProfile>
activeProfiles>
配置了一个releases和一个snapshots的仓库用户名和密码;
<server>
<id>maven-releasesid>
<username>adminusername>
<password>123456password>
server>
<server>
<id>maven-snapshotsid>
<username>adminusername>
<password>123456password>
server>
<repositories>
<repository>
<id>nexusid>
<name>192.168.2.66 private nexusname>
<url>http://192.168.2.66:8081/repository/maven-public/url>
<releases>
<enabled>trueenabled>
releases>
<snapshots>
<enabled>trueenabled>
snapshots>
repository>
repositories>
<pluginRepositories>
<pluginRepository>
<id>nexusid>
<name>local private nexusname>
<url>http://192.168.2.66:8081/repository/maven-public/url>
<releases>
<enabled>trueenabled>
releases>
<snapshots>
<enabled>trueenabled>
snapshots>
pluginRepository>
pluginRepositories>
<distributionManagement>
<repository>
<id>maven-releasesid>
<name>Releasesname>
<url>http://192.168.2.66:8081/repository/maven-release/url>
repository>
<snapshotRepository>
<id>maven-snapshotsid>
<name>Snapshotname>
<url>http://192.168.2.66:8081/repository/maven-snapshots/url>
snapshotRepository>
distributionManagement>
测试发现只需要配置以下代码即可做IDEA的上传操作
<distributionManagement>
<repository>
<id>maven-releasesid>
<name>Releasesname>
<url>http://192.168.2.66:8081/repository/maven-release/url>
repository>
<snapshotRepository>
<id>maven-snapshotsid>
<name>Snapshotname>
<url>http://192.168.2.66:8081/repository/maven-snapshots/url>
snapshotRepository>
distributionManagement>
如下图所示的deploy按钮点击后即可开始打包上传到maven私服;
下图包结构中版本号后还有个实际jar的version是不同的,因为在snapshots版本是允许进行同一个版本的多次推送的。
如下图为上传的正式版本的jar,则会显示与在pom中定义的版本一致的version;但是release版本不允许同版本多次推送,只能通过修改pom.xml文件中的version版本;
https://www.jianshu.com/p/1cfbc1518fce