mvn deploy命令上传jar包

  maven 上传 jar 包到 nexus 私服,分为两种场景:通过源码打包上传、已有jar包上传

1. 通过源码打包上传

1.1 配置 maven 的 settings.xml 文件

  在 settings.xml 文件中配置2个 server,并输入 nexus 的用户名和密码。

      <servers>
        <server>
            <id>release</id>
            <username>admin</username>
            <password>******</password>
        </server>
        <server>
            <id>snapshots</id>
            <username>admin</username>
            <password>******</password>
        </server>
      </servers> 

 

1.2 在 idea 里,配置项目的 pom.xml 文件

  在 idea 里,打开项目的 pom.xml 文件,配置 distributionManagement,包括 id 和 nexus 的url

  注意:这里的 id 要与 settings 文件配置的 server id 相同,程序会通过id去匹配 仓库地址的用户名、密码。 否认执行 deploy 命令会报 status code 401 的异常,意思的安全认证不通过。 

   <distributionManagement>
        <repository>
            <id>release</id>
            <url>http://ip:port/仓库地址/</url>
        </repository>
        <snapshotRepository>
            <id>snapshots</id>
            <url>http://ip:port/仓库地址/</url>
        </snapshotRepository>
    </distributionManagement>

 

1.3 执行 deploy 命令

  在 idea 中,有两种方式执行 depoly 命令。

  (1)在 Idea 下面的 Terminal 窗口,确认当前执行路径是项目的根目录,执行命令:mvn deploy  会把当前项目的所有模块都会打包上传。

  (2)在 Idea 右侧的 Maven 窗口,找到要打包上传的模块,打 Lifecycle 下,找到 deploy 命令,点击执行,会上传当前所属的模块。

 

2. 上传已有的 jar

  另外一种场景,手里拿到了其他部门或公司开发的 jar 包,并不打算放到 thirdparty、central 这2个仓库里。想上传到 releases 或 snapshots 仓库里。

  解决办法有两种:

2.1 登录服务器,手动上传

  第一种比较直接,如果可以登录到 nexus 私服的服务器上,手动 nexus 下的 storage 目录下,在仓库中手动创建jar包路径,手动上传就可以了。

 

2.2 通过 deploy 命令上传

  主要讲的就是第二种办法,只知道仓库地址、用户名、密码,没有权限登录服务。

2.2.1 配置 maven 的 settings.xml 文件

  在 settings.xml 文件中配置2个 server,并输入 nexus 的用户名和密码。

  为什么还要配置 settings.xml ? 因为 mvn deploy 命令不方便直接指定用户名和密码。 否认执行 deploy 命令会报 status code 401 的异常

      <servers>
        <server>
            <id>release</id>
            <username>admin</username>
            <password>******</password>
        </server>
        <server>
            <id>snapshots</id>
            <username>admin</username>
            <password>******</password>
        </server>
      </servers> 

 

2.2.2 在 idea 中执行 deploy 命令

  为什么还要在 Idea 中执行命令? 因为 Idea 中可以配置Maven环境变量,用于指定读取上面我们配置好的 settings.xml 文件。如果使用 命令提示符,会报  Plugin not found in any plugin repository 等异常。

  执行命令如下:

mvn deploy:deploy-file -Dfile=D:/file/test-1.0-RELEASES.jar -DpomFile=D:/file/test-1.0-RELEASES.pom -Dpackaging=jar -Durl=http://ip:port/仓库地址/ -DrepositoryId=release

  命令解释:

  mvn deploy:deploy-file  是命令名

  -Dfile=   用于指定 jar 所在的位置,绝对路径、相对路径都是支持的,只要能找到指定文件即可。建议把要上传的jar放到一个简单的目录下。

  -DpomFile=   用于指定 pom 文件所在位置。

  -Dpackaging=  要上传的文件类型,jar 或 pom 。上传 jar 包时,-Dfile和-DpomFile 都要填写;只上传 pom 文件,只需要填写 -DpomFile

  -Durl=  要上传的 nexus 仓库地址,snapshots 的jar要上传到snapshots仓库, releases的jar 要上传到 release仓库。如果类型不匹配会报 status code 400 异常。

  -DrepositoryId=  指定使用哪个仓库id,要与 settings.xml 文件中的 server id 相同。匹配不到 id 的话,也会报 status code 405 异常。

  jar包上传成功后,会解析pom文件,自动识别 jar 包的存储路径的。

 

posted @ 2024-04-17 17:34  闲人鹤  阅读(3120)  评论(0编辑  收藏  举报