介绍
maven,java包管理的神器,功能类似于php的composer,node的npm。
背景
maven的便捷使用过的人都知道,不过针对国内环境,下载的速度你懂的。另外,针对比较保密的jar包,上传到公共库显然是不合适的,为此,maven私有库便体现出它的价值。简而言之,在局域网内搭建个中心仓库,用以存放/缓存jar包,这样,开发人员就无需外网下载资源。提升速度和安全性。节约了外网流量。
安装
博主环境
win10 64
apache-maven-3.6.0
Nexus Repository Manager OSS 3.x - Windows
maven
安装配置参考
Nexus 安装(20200805 更新 docker安装,推荐)
下载最新Nexus镜像
docker pull sonatype/nexus3
生成容器
docker run -d -p 8081:8081 --name nexus sonatype/nexus3
稍微等待一会(启动需要时间)
而后访问
注意, 最新的Nexus默认密码已不是admin123了, 我们需要进入容器查看下
docker exec -it nexus /bin/bash
cd nexus-data/
cat admin.password
复制出密钥串登陆即可, 登陆后会提示修改新密码
Nexus 安装(安装包安装)
下载地址 https://www.sonatype.com/download-oss-sonatype
解压(博主:C:\nexus)
cmd切换到C:\nexus\bin目录后执行
nexus.exe/run

等待一会,出现

成功
注意,可能出现端口占用的错误,此时不用急ctrl+c结束安装过程,我们修改下配置文件的端口

重新运行nexus.exe/run即可
打开浏览器访问http://localhost:8090/

点击右上方的"sign up",输入默认生成的账号admin和密码admin123登录
Nexus配置
点击上方小齿轮创建一个叫demo的仓库(博主已经创建了,所以截图里有)



配置demo仓库到maven-public,这样统一由maven-public对外提供服务


仓库创建完毕后我们创建一个用户(demo,123456)


至此私有库基本配置完毕
私有仓库的使用
打开maven的配置文件录入私有仓库的账号和密码


接下来我们上传jar包到私有仓库demo
博主使用IDEA开发,所以直接使用它创建了一个demo项目(内容随意)
pom.xml增加发布设置
<!--DistributionManagement发布管理节点-->
<distributionManagement>
<!--测试版仓库-->
<snapshotRepository>
<!--注意, 这里的设置要和maven setting.xml中一致-->
<id>demo</id>
<name>demo</name>
<url>http://127.0.0.1:8090/repository/demo/</url>
</snapshotRepository>
</distributionManagement>
IDEA点击上传(简单, 推荐)

或者也可以执行命令行上传(此方式需要先编译包)


直接在IDEA的teiminal执行
mvn deploy:deploy-file -DgroupId=com.demo -DartifactId=demo -Dversion=0.0.1 -Dpackaging=jar -Dfile=D:\demo2\demo-0.0.1-SNAPSHOT.jar -Durl=http://localhost:8090/repository/demo/ -DrepositoryId=demo

标红部分记得替换为自己的路径。
得到如下信息上传成功

此时登录nexus查看

至此,私有库的上传成功。
关于私有库的引用就简单多了,直接打开项目的pom.xml:加入以下配置即可:
<dependency>
<groupId> com.demo</groupId>
<artifacId>demo</artifacId>
<version> 0.0.1</version>
</dependency>
<repositories>
<repository>
<id>demo</id>
<name>demo</name>
<url>http://127.0.0.1:8090/repository/maven-public/</url>
<!--告诉Maven可以从这个仓库下载releases版本的构件-->
<releases>
<enabled>true</enabled>
</releases>
<!--告诉Maven不要从这个仓库下载snapshot版本的构件-->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
包的dependency信息可以在

找到
repository信息可以在

请关注我的订阅号
