maven打包时候修改包名称带上git版本号和打包时间方式

按照要求,我会为你提供一个完整的Maven项目中如何在打包时修改包名称带上git版本号和打包时间的攻略。

  1. 概述:

Maven利用pom.xml文件管理项目信息和依赖,pom.xml文件中通过使用插件来执行相关的动作操作。在这里,我们需要用到maven-jar-plugin插件来进行Maven项目的打包操作。通过重写 ${project.build.finalName} 变量中包含日期、版本等信息,生成符合要求的名称。

  1. 安装maven-jar-plugin插件:

在pom.xml文件中添加以下代码:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.example.MainClass</mainClass>
                        <packageName>${project.groupId}.${project.artifactId}.${buildNumber}.${timestamp}</packageName>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

说明:

maven-jar-plugin指定了用于生成jar包的插件。${project.artifactId}表示项目名称,${project.groupId}表示Project对象的groupId,${buildNumber}表示git版本号, 如果你使用的是GitHub,那么通过 GitHub 的 API 获取版本号,${timestamp}表示编译时间。

  1. 配置Git插件:

在pom.xml文件中添加依赖:

<properties>
    <maven.build.timestamp.format>yyyyMMdd_HHmmss</maven.build.timestamp.format>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>pl.project13.maven</groupId>
            <artifactId>git-commit-id-plugin</artifactId>
            <version>4.0.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>revision</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <dateFormat>${maven.build.timestamp.format}</dateFormat>
            </configuration>
        </plugin>
    </plugins>
</build>

说明:

这里我们添加了maven的时间戳格式到properties中,用于下一步的说明,同时也可以更改其他的时间格式以满足需求。maven-jar-plugin插件通过${buildNumber}获取版本号,git-commit-id-plugin插件则会将git version的7位数字和一堆有意义但日常使用场景不太大的字符串一块获取。同时,这个插件还支持Svn和Mercurial,可以根据实际情况更改。

  1. 配置Maven-jar-plugin插件:

在pom.xml文件中添加以下代码:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.example.MainClass</mainClass>
                        <packageName>${project.groupId}.${project.artifactId}.${git.commit.id}.${maven.build.timestamp}</packageName>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

说明:

${git.commit.id}可以获取到版本号,${maven.build.timestamp.format}可以获取到编译时间格式。同时,还可以使用${git.branch}获取分支信息,${git.commit.id.describe}获取描述信息等。

  1. 示例:

下面给出两个常见的使用示例:

使用GitHub网站进行版本管理:

<build>
    <plugins>
        <plugin>
            <groupId>pl.project13.maven</groupId>
            <artifactId>git-commit-id-plugin</artifactId>
            <version>4.0.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>revision</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <dateFormat>${maven.build.timestamp.format}</dateFormat>
                <dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
                <prefix>git</prefix>
                <verbose>true</verbose>
                <generateGitPropertiesFile>true</generateGitPropertiesFile>
                <generateGitPropertiesFilename>${project.build.outputDirectory}/META-INF/git.properties</generateGitPropertiesFilename>
            </configuration>
        </plugin>
    </plugins>
</build>

说明:

这个示例使用指定的git-commit-id-plugin插件版本号是4.0.0,同时通过${project.basedir}/.git获取.git目录,设置了前缀为git,且输出较为详细。

使用Bitbucket版本管理:

<build>
    <plugins>
        <plugin>
            <groupId>com.github.ekryd.echo-maven-plugin</groupId>
            <artifactId>echo-maven-plugin</artifactId>
            <version>1.0.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>echo</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <content>Git commit hash for ${project.artifactId} is ${buildNumber}</content>
            </configuration>
        </plugin>
    </plugins>
</build>

说明:

这个示例使用的插件是echo-maven-plugin,version为1.0.1,${buildNumber}为git版本号,通过这个示例指定了当前项目,以及版本号的输出方式。

希望这个攻略和示例可以帮助到你,如果您有任何问题,欢迎随时咨询我。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:maven打包时候修改包名称带上git版本号和打包时间方式 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • java注解的全面分析

    下面介绍一下 “Java注解的全面分析” 的完整攻略。 1. 什么是Java注解 Java 注解(Annotation)是 Java 语言中的一种类似注释的机制,它可以通过标签(@Tag)的形式将元数据信息与代码进行绑定。Java 注解提供了对程序元素进行元数据描述的能力,它可以用于 Java 代码的分析、编译或者运行时的处理,以及生成 XML 文件等。Ja…

    Java 2023年5月26日
    00
  • springboot 自定义启动器的实现

    下面是关于“springboot 自定义启动器的实现”的攻略,包含两个示例: 一、为什么要自定义启动器 Spring Boot是一款非常流行的Java Web框架,它极大地提高了我们的开发效率。而自定义启动器则是在Spring Boot框架下进行自定义的一种方式。通常情况下,我们会将一系列相关的模块封装进一个自定义的启动器中,以便于其他项目能够更加方便的使用…

    Java 2023年5月19日
    00
  • 什么是Java安全管理?

    Java安全管理是Java平台提供的一种安全机制,它通过Java安全管理器对Java运行时环境中进行的一些非安全操作进行控制,从而保障Java运行时环境的安全性。 Java安全管理器通过策略文件来指定Java运行时环境中允许执行的权限,从而对Java运行时环境进行安全控制。Java安全管理的使用可以分为以下步骤: 创建策略文件 策略文件必须是一个文本文件,它…

    Java 2023年5月11日
    00
  • 详解springMVC之与json数据交互方法

    详解Spring MVC之与JSON数据交互方法 在Web开发中,与JSON数据交互是一种常见的需求。Spring MVC提供了多种方式来实现与JSON数据的交互。本文将详细介绍Spring MVC与JSON数据交互的相关知识,并提供两个示例说明。 Spring MVC中与JSON数据交互的方式 在Spring MVC中,与JSON数据交互的方式有以下几种:…

    Java 2023年5月17日
    00
  • 文件格式有哪些,常见文件格式种类大全(中英对照)

    文件格式有哪些,常见文件格式种类大全(中英对照) 在计算机中,不同的文件格式对应着不同的数据类型。每种数据类型所使用的文件格式也会不同。本文将列举一些常见的文件格式并进行简要介绍和中英对照。 图片文件格式 JPEG (.jpg, .jpeg) JPEG全名为Joint Photographic Experts Group,是一种带有损压缩的图像格式,被广泛应…

    Java 2023年6月15日
    00
  • springMVC使用jsp:include嵌入页面的两种方法(推荐)

    以下是完整攻略: 1. SpringMVC 使用 jsp:include 嵌入页面的两种方法 在 SpringMVC 中,我们可以通过 jsp:include 标签来嵌入页面,它可以将另一个页面插入到当前页面中。这在网站开发中非常常见,比如在页面的 header 或 footer 中嵌入其他页面的内容。下面将介绍两种最常用的方法。 1.1 方法一:使用 js…

    Java 2023年6月15日
    00
  • JavaScript正则表达式验证登录实例

    下面是JavaScript正则表达式验证登录实例的完整攻略。 一、什么是正则表达式? 正则表达式是一种描述字符串模式的语言,它可以用来实现字符串的检索、替换、分割等操作。在JavaScript中,正则表达式是对象,可以通过构造函数RegExp来创建。 二、为什么要使用正则表达式验证登录? 在登录功能中,我们需要对用户输入的用户名和密码进行验证,以确保输入符合…

    Java 2023年6月15日
    00
  • Spring AbstractRoutingDatasource 动态数据源的实例讲解

    Spring AbstractRoutingDatasource 动态数据源的实例讲解 在实际的应用中,我们可能需要操作多个数据库,例如主数据库和从数据库。如果使用传统的方式,需要在每次操作数据库时都手动指定使用哪个数据源,这样非常繁琐。 Spring提供了AbstractRoutingDataSource类来实现动态数据源的管理,可以在运行时根据需要动态切…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部