Maven将第三方jar包deploy到nexus私服
最近接触了一个项目,需要用到jcaptcha
验证码相关的依赖包
<!-- jcaptcha 验证码相关依赖-->
<dependency>
<groupId>com.octo.captcha</groupId>
<artifactId>jcaptcha-api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.octo.captcha</groupId>
<artifactId>jcaptcha</artifactId>
<version>2.0-alpha-1</version>
</dependency>
<dependency>
<groupId>com.octo.captcha</groupId>
<artifactId>jcaptcha-integration-simple-servlet</artifactId>
<version>2.0-alpha-1</version>
</dependency>
前面两个依赖私服上都有,第三个依赖去官方的资源库下载到本地后准备deploy到公司私服,方便日后使用,奈何自己基础太差,一个简单的deploy
踩了很多坑,特此记录一下,加深记忆。
下载好jar
包后,首先install
到本地Maven
仓库,命令如下:
mvn install:install-file -DgroupId=com.octo.captcha -DartifactId=jcaptcha-integration-simple-servlet -Dversion=2.0-alpha-1 -Dpackaging=jar -Dfile=jcaptcha-2.0-alpha-1.jar
install
到本地后,项目依赖问题解决,剩下的就是将这个jar
放到远程私服,这里有两种方式:
- 1.直接在私服上
upload
(推荐这种用法,简单粗暴)
- 2.使用maven deploy命令
mvn org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy-file -DgeneratePom=false -DgroupId=com.octo.captcha -DartifactId=jcaptcha-integration-simple-servlet -Dversion=2.0-alpha-1 -Dpackaging=jar -Dfile=C:\Users\Administrator\Desktop\jcaptcha-integration-simple-servlet-2.0-alpha-1.jar -Durl=http://192.168.116.129:8081/repository/maven-releases/ -DrepositoryId=nexus-public
参数解释:
-
org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy-file
使用
mavn-deploy-plugin
2.8.2版本deploy
本地jar
到私服
此处对应的deploy
插件版本需要本地仓库里已经有相关的依赖包,如果没有,可以去官方的资源库(打开可能较慢;备用网址1、备用网址2)下载后install
到本地仓库
-
-DgeneratePom=false
(default=true
)可选项忽略生成
Pom
文件,默认生成 -
-DgroupId
、-DartifactId
、-Dversion
Maven
坐标对应此依赖 -
-Dpackaging
打包方式
-
-Dfile
要
deploy
的jar
包 -
-Durl
私服地址,和
settings.xml
中mirror
标签中的url
一致 -
-DrepositoryId
私服仓库地址,和
settings.xml
中server
标签中的id
一致
具体命令参数解释可参考官方
执行前的一些设置
Maven配置文件相关设置settings.xml
-
server
标签:id
对应前面-DrepositoryId
、username
和password
对应maven
私服的账号密码
<server>
<id>nexus-public</id>
<username>admin</username>
<password>admin</password>
</server>
-
mirror
标签:id
同server标签中id
一致、name
为私服中实际存在的仓库
<mirror>
<id>nexus-public</id>
<name>maven-releases</name>
<url>http://192.168.116.129:8081/repository/maven-releases/</url>
<mirrorOf>*</mirrorOf>
</mirror>
- 私服远程
Deployment policy
设置为Allow redeploy
执行完效果如下:
附:写法不对,引发的一些错误和解决方案
- 未指定
maven-deploy-plugin
版本
mvn deploy:deploy-file -DgroupId=com.octo.captcha -DartifactId=jcaptcha-integration-simple-servlet -Dversion=2.0-alpha-1 -Dpackaging=jar -Dfile=jcaptcha-integration-simple-servlet-2.0-alpha-1.jar -Durl=http://192.168.116.129:8081/repository/maven-public/ -DrepositoryId=nexus-public
报错信息:
解决方法,指定一下版本
mvn org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy-file -DgroupId=com.octo.captcha -DartifactId=jcaptcha-integration-simple-servlet -Dversion=2.0-alpha-1 -Dpackaging=jar -Dfile=C:\Users\Administrator\Desktop\jcaptcha-integration-simple-servlet-2.0-alpha-1.jar -Durl=http://192.168.116.129:8081/repository/maven-releases/ -DrepositoryId=nexus-public
- 在依赖包路径下
-Dfile
指定了本地仓库中存在的包
mvn org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy-file -DgeneratePom=false -DgroupId=com.octo.captcha -DartifactId=jcaptcha-integration-simple-servlet -Dversion=2.0-alpha-1 -Dpackaging=jar -Dfile=jcaptcha-integration-simple-servlet-2.0-alpha-1.jar -Durl=http://192.168.116.129:8081/repository/maven-releases/ -DrepositoryId=nexus-public
因为是将第三方jar
包deploy
到私服,所有直接引用本地库的包会报错
报错信息:
解决方法,指定其他路径
mvn org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy-file -DgroupId=com.octo.captcha -DartifactId=jcaptcha-integration-simple-servlet -Dversion=2.0-alpha-1 -Dpackaging=jar -Dfile=C:\Users\Administrator\Desktop\jcaptcha-integration-simple-servlet-2.0-alpha-1.jar -Durl=http://192.168.116.129:8081/repository/maven-releases/ -DrepositoryId=nexus-public
有写的不对的地方,欢迎指正,共同进步!
一些其它链接: