发布Maven构件的几种方式

发布构件到Maven仓库的几种方案比较

1、Maven 原生发布方式

  • mvn deploy : 直接通过pom.xml文件中定义的版本和服务器信息,将构件发布到服务器
  • mvn deploy:deploy-file :指定某个文件作为版本发布,但是一次只能发布一个jar文件,不适合多项目结构的maven工程。可以通过参数的方式覆盖pom.xml文件的配置
    mvn deploy:deploy-file -Dfile=/opt/pr****n/*-ommon/*ommon-base/target/**-mon-base-2.0.0-SNAPSHOT.jar -DrepositoryId=nexus-snapshots -DgroupId=a -DartifactId=b -Dversion=1.0.0 -Durl=file:/opt/repository/aaa/
    
  • 参考文档:
    https://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
    https://maven.apache.org/plugins/maven-deploy-plugin/

2、Maven插件方式(maven-release-plugin)

  • pom.xml文件中安装 maven-release-plugin 插件

  • 对插件内容进行配置

       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-release-plugin</artifactId>
           <version>2.5.3</version>
           <configuration>
               <!--git用户名-->
               <!--suppress UnresolvedMavenProperty -->
               <username>${username}</username>
               <!--git密码-->
               <!--suppress UnresolvedMavenProperty -->
               <password>${password}</password>
               <!--mvn目标指令-->
               <goals>-f pom.xml deploy</goals>
           </configuration>
       </plugin>
    
  • 同时需要在pom.xml中配置git 或 svn地址

        <scm>
            <!--release包需要放入的nexus或者其他maven release包的仓库url地址-->
            <url>http://********/repository/maven-releases/</url>
            <!--connection, developerConnection: 都是连接字符串,其中后者是具有write权限的scm连接 -->
            <!--需要打包项目的git地址-->
            <developerConnection>scm:git:http://*********/****-common.git</developerConnection>
            <!--需要打包项目的git地址-->
            <connection>scm:git:http://*********/****-common.git</connection>
            <tag>HEAD</tag>
        </scm>
    
  • 执行命令进行发布,也可回滚

     mvn release:prepare -Dusername=username -Dpassword=password
     mvn release:perform -Dusername=username -Dpassword=password
    
  • 此种方式的问题:

    • 有多步交互,会要求创建代码仓库的tag
    • 发布过程要求输入release版本
    • 要求指定新的snapshot版本
    • 会在服务器上创建snapshot 分支

3、通过gradle插件(Maven Publish Plugin)

  • 只适用于gradle项目
  • 参考文档:https://docs.gradle.org/current/userguide/publishing_maven.html

你可能感兴趣的:(DevOps)