Maven将第三方jar包deploy到nexus私服

Maven将第三方jar包deploy到nexus私服

最近接触了一个项目,需要用到jcaptcha验证码相关的依赖包



    com.octo.captcha
    jcaptcha-api
    1.0

    

    com.octo.captcha
    jcaptcha
    2.0-alpha-1



   com.octo.captcha
   jcaptcha-integration-simple-servlet
   2.0-alpha-1

前面两个依赖私服上都有,第三个依赖去官方的资源库下载到本地后准备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-plugin 2.8.2版本deploy本地jar到私服

    Maven_deploy_plugin.png

此处对应的deploy插件版本需要本地仓库里已经有相关的依赖包,如果没有,可以去官方的资源库(打开可能较慢;备用网址1、备用网址2)下载后install到本地仓库

  • -DgeneratePom=falsedefault=true)可选项

    忽略生成Pom文件,默认生成

  • -DgroupId-DartifactId-Dversion

    Maven坐标对应此依赖

  • -Dpackaging

    打包方式

  • -Dfile

    deployjar

  • -Durl

    私服地址,和settings.xmlmirror标签中的url一致

  • -DrepositoryId

    私服仓库地址,和settings.xmlserver标签中的id一致

具体命令参数解释可参考官方

执行前的一些设置

Maven配置文件相关设置settings.xml

  • server标签: id 对应前面-DrepositoryIdusernamepassword对应maven私服的账号密码

      nexus-public
      admin
      admin

  • mirror标签:id 同server标签中id一致、name为私服中实际存在的仓库

      nexus-public
      maven-releases
      http://192.168.116.129:8081/repository/maven-releases/
      *
  
  • 私服远程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

因为是将第三方jardeploy到私服,所有直接引用本地库的包会报错

报错信息:


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

有写的不对的地方,欢迎指正,共同进步!

一些其它链接:

  • 关于参数-DgeneratePom=false的相关内容解释

  • deploy-file

  • Maven依赖原理

你可能感兴趣的:(Maven将第三方jar包deploy到nexus私服)