上传本地jar包文件到私服

一、 公司的项目上传到公司私服

  1. 使用idea中maven的install将项目打包,放到本地仓库
    • install三个关键步骤:

      • 将项目打包成jar包放到项目的target目录下(这一步等同于mvn package命令的操作)
      • 将jar包install到idea中配置的本地仓库中
      • 将pom文件install到idea中配置的本地仓库中,在其他项目使用jar包时能够通过pom文件加载本jar包的maven依赖
    • idea中配置了本地仓库的地址,就不会再使用idea中指定的settings.xml配置文件中指定的本地仓库地址

  2. 使用idea中maven的deploy将项目打包,发布到私服
    • deploy四个关键步骤

      • 将项目打包成jar包放到项目的target目录下(这一步等同于mvn package命令的操作)
      • 将jar包install到idea中配置的本地仓库中
      • 将pom文件install到本地仓库中,在其他项目使用jar包时能够通过pom文件加载本jar包的maven依赖
      • 上传本地jar包和pom文件到私服
    • deploy本地jar包到私服需要的配置

      • 在父工程pom文件中指定私服的位置

        <distributionManagement>
            <repository>
                <!--自己定义仓库id,需要和settings.xml配置文件中server标签中的id对应-->
                <id>lx-releases</id>
                <!--仓库名称,仓库的描述-->
                <name>releases repository</name>
                <!--仓库地址-->
                <url>http://XXXX.com/repository/maven-releases/</url>
            </repository>
            <snapshotRepository>
                <id>lx-snapshots</id>
                <name>snapshots repository</name>
                <url>http://XXXX.com/repository/maven-snapshots/</url>
            </snapshotRepository>
        </distributionManagement>
        

        注意:

        • 配置了私服的releases仓库和snapshots仓库,上传的时候maven怎么知道本地jar包传到哪个仓库?

          1. 私服中的仓库有相关的属性,本地如果是release版本传到私服release仓库,本地如果是snapshot版本传到私服snapshot仓库。下图是私服的可视化页面
            在这里插入图片描述在这里插入图片描述

          2. 项目pom.xml文件中指定了jar包是release版本还是snapshot版本
            在这里插入图片描述

      • 子工程pom文件指定父工程pom就可以自动依赖父工程deploy的配置,这样就每个子工程就不需要单独添加deploy配置

        <parent>
            <artifactId>项目artifactId</artifactId>
            <groupId>项目groupid</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        
      • 发布jar包到私服,如果私服需要认证,就需要配置私服的账户密码,为了防止因为代码泄漏或者代码开源导致私服的账户密码泄漏,所以将私服的账户密码配置在本地maven的settings.xml文件中

        <servers>
            <server>
                <id>lx-public</id>
                <username>admin</username>
                <password>password</password>
            </server>
            <server>
                <id>lx-releases</id>
                <username>admin</username>
                <password>password</password>
            </server>
        
            <server>
                <id>lx-snapshots</id>
                <username>admin</username>
                <password>password</password>
            </server>
        </servers>
        

        注意:

        • settings.xml配置文件中server标签中的id要和pom.xml文件中repository中的id对应
    • 使用命令的方式发布本地jar包到本地

      • 如果不想在pom文件中指定私服url,可以在settings.xml中指定私服相关的配置,使用maven命令发布jar包到私服,命令中指定settings.xml中的配置

      • 不喜欢用命令部署,配置略

二、 第三方的jar包上传到公司私服

  1. 上传jar包到私服命令

    • 通用命令

      mvn deploy:deploy-file 
      -DgroupId=<group-id> \
        -DartifactId=<artifact-id> \
        -Dversion=<version> \
        -Dpackaging=<type-of-packaging> \
        -Dfile=<path-to-file> \
        -DrepositoryId=<id-to-map-on-server-section-of-settings.xml> \
        -Durl=<url-of-the-repository-to-deploy>
      
    • 命令说明

      -Dmaven.test.skip:表示跳过测试

      -DgroupId=com.pt.poseidon:表示jar包所属的groupId

      -DartifactId=poseidon-api:表示jar包的artifactId

      -Dfile=D:\xxx\poseidon-common-1.0.0.jar:表示jar包所在本地文件的路径

      -Durl=http://【username:password】@仓库地址:如果需要认证则需要username和password

    • 举例

      mvn -X deploy:deploy-file -Dmaven.test.skip=true -DgroupId=com.pt.poseidon -DartifactId=poseidon-api -Dversion=1.0.0 -Dpackaging=jar -Dfile=D:\com\pt\poseidon\poseidon-api\1.0.0\poseidon-api-1.0.0.jar -DpomFile=D:\com\pt\poseidon\poseidon-api\1.0.0\poseidon-api-1.0.0.pom -Durl=http://admin:City_app123$@私服仓库地址
      
    • 注意:

      • 如果私服仓库需要认证,可以在-Durl中直接指定用户名和密码

      • 私服仓库必须是hosted类型的才支持上传jar包,如果选了非hosted类型的仓库,deploy回报405异常

      • 私服仓库类型

        • hosted:托管仓库,可以将第三方依赖放到这个仓库

          可以设置release版本、snapshot版本存放不同版本的jar包

        • proxy:代理存储库,指定被代理的仓库,项目优先从代理仓库获取依赖,如果代理仓库不存在需要的依赖,则从被代理仓库获取,并保存到当前代理仓库,减少项目和被代理仓库的网络带宽和时间开销在这里插入图片描述

        • group:可以组合多个仓库,对外提供统一访问路径
          在这里插入图片描述

  2. 同时上传pom文件

    • 如果第三方jar包,默认会自动生成一个通用的pom,如果不需要自动生成pom文件,需要配置如下:

      -DgeneratePom=false
      
    • 如果第三方jar包存在pom文件,需要上传到私服

      -DpomFile=pom文件所在本地路径
      # 案例
      -DpomFile=D:\com\ls\pt\commons-collections\3.2.1\commons-collections-3.2.1.pom
      
  3. 常见异常

    • 本地jar文件找不到问题

      • 错误信息

        Caused by: org.apache.maven.plugin.MojoFailureException: Cannot deploy artifact from the local repository: D:\repository\XXX
        

        在这里插入图片描述

      • 解决办法

        • 方法1:jar包如果放在本地仓库,上传到私服的时候报如下错误,可以将jar包拷贝到本地仓库外面进行上传
        • 方法2:或者将需要上传的jar包拷贝到maven的lib目录下
    • 405错误

      • 错误信息

        Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to deploy artifacts: Could not transfer XXX from/to remote-repository (http://XXX@XXX): Transfer failed for http://XXX 405 PUT
        

        在这里插入图片描述

      • 解决方案

        将上传仓库地址改为hosted类型仓库地址

    • 401错误

      • 错误信息

        Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact com.pt.poseidon:poseidon-api:jar:1.0.0 from/to remote-repository (http://XXX/repository/maven-releases/): Transfer failed for
         http://XXX 401 Unauthorized
        

        在这里插入图片描述

      • 解决方案

        没有认证,在请求地址前面加上私服的用户名和密码

        -Durl=http://admin:password$@私服仓库url

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值