首先介绍上传jar包到maven仓库的种方法
方法一 通过Eclipse上传
方法二 使用mvn命令在控制台上传
具体使用方法如下:
方法一:
右击项目-->Run as-->maven build...-->Goals中输入如下命令:
deploy -e -Dmaven.test.skip=true
-Dmaven.test.skip=true 来跳过测试类的编译和运行过程
但是使用方法一可能会有与Eclipse版本相关的问题,具体描述看https://stackoverflow.com/questions/64006644/maven-bintray-distribution-in-eclipse-is-not-uploading-jar-files-error-code-401
既然与Eclipse版本相关,如果不想换Eclipse版本的话,那就不用Eclipse上传,用Eclipse仅打包生成jar文件,然后使用外部Maven运行时将jar文件上传到maven仓库,此时是分两步实现了上传jar包到maven仓库。
(生成jar文件install ,部署deploy,是mvn生命周期相关内容,可参考。。。)
方法二 通过mvn命令上传jar包
第一步:生成jar包
右击项目-->Run as-->maven install
第二步:外部Maven运行上传jar文件
在Maven安装目录的bin文件夹下打开控制台,运行命令:
mvn deploy:deploy-file -DgroupId=com.yak -DartifactId=comp-modbus -Dversion=0.0.1 -Dpackaging=jar -Dfile=D:\apache-maven-3.6.3\repo\com\yak\comp-modbus\0.0.1\comp-modbus-0.0.1.jar -DpomFile=D:\apache-maven-3.6.3\repo\com\yak\comp-modbus\0.0.1\comp-modbus-0.0.1.pom -Durl=http://144.123.15.122:8890/repository/maven-releases/ -DrepositoryId=nexus-releases
deploy:deploy-file: 表示发布独立的文件。
-DgroupId 与maven项目的pom.xml文件中的groupId一致
-DartifactId 与maven项目的pom.xml文件中的artifactId一致
-Dversion 与maven项目的pom.xml文件中的version一致
-Dfile 打包生成的jar文件在本地文件系统中的路径
-DpomFile 打包生成的pom文件在本地文件系统中的路径,最好指定一个明确路径的pom文件,如果不指定的话,那么 maven 就会自动生成一个 pom ,但基本是一个空的 pom,依赖关系都没有,这将导致,如果别人引用了你的 jar 包,并且需要使用依赖关系里的代码,但却找不到,就会抛出 NoClassDefFoundError 错误,因为编译时没有问题,但运行时却找不到 class 文件。
-Durl 上传jar包到某个仓库的仓库Url,与setting.xml文件的<server>标签的<url>一致
-DrepositoryId 上传jar包到某个仓库的仓库id,与setting.xml文件的<server>标签的<id>一致
在执行方法二的第二步时,可能会遇到错误:
Eclipse打包生成的文件是在自己定义的本地仓库中的(我的仓库路径是D:\apache-maven-3.6.3\repo),试试把jar文件和pom文件所在的文件夹移出仓库再上传
方法二第二步执行出错参考自https://www.cnblogs.com/stateis0/p/9236312.html
命令参数解读参考
至于为什么有时点击maven install,有时点击maven build使用deploy,这是有关maven生命周期和mvn命令的,可以参考maven生命周期。
- 上传jar文件没有pom时
mvn deploy:deploy-file -DgroupId=com.dingtalk.open -DartifactId=taobao-sdk-java-auto -Dversion=0.0.1 -Dpackaging=jar -Dfile=E:\DingDownload\taobao-sdk-java-auto_1479188381469-20210907.jar -Durl=http://144.123.15.122:8890/repository/maven-releases/ -DrepositoryId=nexus-releases
命令解释:
-DgroupId=com.dingtalk.open 自定义
-DartifactId=taobao-sdk-java-auto 自定义
-Dversion=0.0.1 自定义
-Durl=http://144.123.15.122:8890/repository/maven-releases/ 资源库的地址
-DrepositoryId=nexus-releases setting.xml文件中配置的ID