美文网首页日常记录
Maven将第三方jar包deploy到nexus私服

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

作者: FinalException | 来源:发表于2019-12-26 15:39 被阅读0次

    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-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私服的账号密码
    <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
    

    因为是将第三方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
    

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

    一些其它链接:

    相关文章

      网友评论

        本文标题:Maven将第三方jar包deploy到nexus私服

        本文链接:https://www.haomeiwen.com/subject/ckxloctx.html