在公司开发时,自己开发出来的 jar 包不会放在大家都能访问的中央仓库上,公司内部都会搭建自己的私服,私服的搭建【不是重点】,我们主要学习如何将开发好的 jar 包 deploy(通俗的说法就是上传)到私服上
私服采用了 nexus 公司提供的免费软件来搭建,下载地址为:https://www.sonatype.com/nexus/repository-oss-download
搭建步骤
如果自己尝试搭建,建议选择 2.x 这个旧的版本,因为更小、更简单
以 2.x 为例,下载完毕后 第一步,解压缩,会得到下面两个文件夹和如下重要目录结构
nexus-2.14.20-02 |-bin |-jsw |-windows-x86-64 |-console-nexus.bat 以黑窗口方式运行 |-install-nexus.bat 安装nexus为windows服务 |-start-nexus.bat 启动nexus的windows服务 |-stop-nexus.bat 停止nexus的windows服务 |-uninstall-nexus.bat 卸载nexus的windows服务 |-conf |-wrapper.conf sonatype-work
第二步(可选),如果 java 的环境变量配置的不是 1.8 版本,修改上图中 wrapper.conf,将
wrapper.java.command=java
修改为
wrapper.java.command=C:\Program Files\Java\jdk1.8.0_212\bin\java
其中 C:\Program Files\Java\jdk1.8.0_212\bin
根据你 jdk 安装的实际情况改动
第三步,如果 java 的环境变量配置的是 1.8 版本,直接运行 console-nexus.bat 即可,想停止服务,按 Ctrl+C
或者直接关闭黑窗口即可
不建议装为 windows 服务,这个软件将来也应该运行在公司内网服务器上,而不是你的个人电脑上
第四步,打开浏览器
http://localhost:8081/nexus
点击右上角的 Log In 链接,输入用户名 admin
和密码 admin123
先认识一下管理界面
我们要做的就是记录正式版(Releases)和快照版(Snapshots)的仓库地址,以后我们自己开发打包的 jar 就会向这两个地址去上传,同时也可以供其它公司同事下载
deploy 步骤
第一步,配置仓库地址,用于 deploy 上传
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> ... <distributionManagement> <repository> <id>releases</id> <url>http://localhost:8081/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>snapshots</id> <url>http://localhost:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement> ... </project>
-
releases 对应正式版的仓库
-
snapshots 对应快照版的仓库
第二步,因为上传 jar 需要认证,还要在 settings.xml 中配置认证信息
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> ... <servers> <server> <id>releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server> </servers> ... </settings>
其中 <server>
的 id 标签值要与 <repository>
以及 <snapshotRepository>
的 id 标签值一致,用户名密码这里为了简单就采用了私服管理员的,以后公司会分配个人账号和密码
第三步,运行 mvn deploy 命令,即可将对应模块的 jar 上传至私服,注意我们的 jar 的 version 是 snapshot 结尾的,最后会上传至 snapshots 对应的库
第四步,其它开发人员如果要从私服下载 jar 包,按普通方式配置仓库即可
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> ... <repositories> <!-- 其它第三方的仓库 --> <!-- 本公司的私服仓库地址 --> <repository> <id>releases</id> <url>http://localhost:8081/nexus/content/repositories/releases/</url> </repository> <repository> <id>snapshots</id> <url>http://localhost:8081/nexus/content/repositories/snapshots/</url> </repository> </repositories> ... </project>
还可以简化配置一个仓库 http://localhost:8081/nexus/content/groups/public/
它对应的仓库称为仓库组,相当于私服中多个仓库的统一入口,但仅能用于下载