问题现象:
最近项目中需要在window服务器上搭建maven仓库,于是我就学习了这方面的知识。
问题分析:
1. 首先启动 docker / docker desktop,这里讲解基于 docker desktop 上的学习心得。
2. cmd窗口输入:
docker search nexus
3. 选择第一个,用的人最多的,输入:
docker pull sonatype/nexus3
4. 查看下载的镜像,输入:
docker images
5. 在本地创建文件夹 E:/nexus3/nexus-data ,再创建容器,配置自重启和映射路径并启动,输入:
docker run -it -p 8081:8081 --restart=always -v E:/nexus3/nexus-data:/nexus-data/ sonatype/nexus3
6. 登录 服务器ip:8081
7. 在服务器 E:\nexus3\nexus-data 下,会有一个 admin.password 文件,打开它,并复制其中的内容(不需要解码),将内容复制到Password,然后Username填的是 admin ,登录成功后会需要修改密码,和初始化配置。
翻译意思是:
8. 一般情况下选择 Enable anonymous access(启用匿名访问)即可。
配置结束:
9.创建私有仓库:
10.修改本地 maven 的配置文件 settings.xml:
添加以下代码到servers标签中:
<server>
<id>仓库名(如:thpower-bladex)</id>
<username>仓库账号(如admin)</username>
<password>仓库密码(如admin123)</password>
</server>
保存关闭settings.xml文件。
11. 上传 .jar 依赖包 到创建好的私有仓库 thpower-bladex :
11.1首先在需要上传.jar包的模块中的pom文件(项目全部jar包都要上传,则可以在项目最外层的pom.xml)中加入以下代码:
11.2 打开 IDEA 的 Terminal 窗口,输入以下命令:
mvn clean install deploy
假如出现以下红字报错:
xxx 401 Unauthorized ->
意思是服务认证出错(未认证,也就是未登录),有可能是因为本机的maven环境不止一个版本,请查看环境变量中的 MAVEN_HOME 变量配置的路径是否为 IDEA使用的版本,调整为相同版本后再尝试,应该就可以了。
假如出现以下红字报错:
则是因为如果在plugin中添加maven-jar-plugin插件之后,maven会运行两次maven-jar-plugin插件,第一次运行是打包当前工程的jar,第二次运行是执行在plugin中设置的jar,这样的话会生成两个同名jar包,这里就要用到 classifier 这个属性了。classifier 是用来标识不同的jar包的名称的一个分类符,这个属性的值会添加到工程jar包的名称后面。
在pom.xml中的plugins标签中加入以下代码:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>service-jar</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>bak</classifier> <!-- 生成deploy-0.0.1-SNAPSHOT-bak.jar -->
<classesDirectory>${project.build.directory}/此处写入报错的project名/</classesDirectory>
</configuration>
</execution>
</executions>
</plugin>
11.3 如果加上了还不能解决,估计是因为打包命令缺乏必要参数的原因,把上一步加的插件去掉,然后使用IDEA自带的打包工具,简单方便又快捷:
11.4 到nexus私有仓库查看已上传的依赖包: