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(推荐这种用法,简单粗暴)
Nexus_upload.png
- 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-plugin2.8.2版本deploy本地jar到私服
Maven_deploy_plugin.png
此处对应的deploy插件版本需要本地仓库里已经有相关的依赖包,如果没有,可以去官方的资源库(打开可能较慢;备用网址1、备用网址2)下载后install到本地仓库
-
-DgeneratePom=false(default=true)可选项忽略生成
Pom文件,默认生成 -
-DgroupId、-DartifactId、-DversionMaven坐标对应此依赖 -
-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
Nexus_allow_redeploy.png
执行完效果如下:
Maven_deploy_success.png
附:写法不对,引发的一些错误和解决方案
- 未指定
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
报错信息:
not_definition_plugin_version.png
解决方法,指定一下版本
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到私服,所有直接引用本地库的包会报错
报错信息:
use_local_repository_error.png
解决方法,指定其他路径
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
有写的不对的地方,欢迎指正,共同进步!
一些其它链接:











网友评论