欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Maven=>打包部署时java/war包名增加时间戳

程序员文章站 2022-05-02 15:06:31
...

maven打包加时间戳

基于Maven的项目,发布时需要打包,如web项目打成war格式包。每次打包时希望自己加上时间戳,假如我的项目名是myproject,默认打包后名为ROOT-2.1.1.war。而我希望的名字为ROOT-2.1.1-{yyyyMMddHHmmss},方便以后对包进行查找与管理,如何实现这种效果呢?

  1. 使用maven自带的属性
    设置时间戳格式:在pom.xml文件中加入以下配置
<properties>
   <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
</properties>

<build>...</build>中引用该属性

<build>
        <!--打jar则在finalName里面-->
		<finalName>${project.artifactId}-${project.version}-${maven.build.timestamp}</finalName>
    
        <!--打war则在 maven-war-plugin 里面的 warName 里面-->
         <plugins>       
                <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <!--最终打包名-->
					<warName>${project.artifactId}-${project.version}-${maven.build.timestamp</warName>
                    <warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>     
</build>

Maven自带时间戳使用${maven.build.timestamp},但是时区是UTC(比北京时间晚8个小时)。 如果要使用GMT+8,就需要插件提供支持,以下两个插件可以实现。

  1. <plugins></plugins>使用buildnubmer-maven-plugin
<build>
        <!--打jar则在finalName里面-->
        <finalName>
            ${project.artifactId}-${project.version}-${timestamp}
        </finalName>
        
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
                <version>1.4</version>
                <configuration>
                    <timestampFormat>yyyyMMddHHmmss</timestampFormat>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>create-timestamp</goal>
                        </goals>
                    </execution>
                </executions>
                <inherited>false</inherited>
       </plugin> 
        
        <!--打war则在 maven-war-plugin 里面的 warName 里面-->     
       <plugin>
             <artifactId>maven-war-plugin</artifactId>
             <version>2.2</version>
             <configuration>
             <!--最终打包名-->
			   <warName>${project.artifactId}-${project.version}-${maven.build.timestamp</warName>
               <warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>
               <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
       </plugin>
     </plugins>    
</build>

默认属性是timestamp,在打包plugin中引用该属性

jar包
Maven=>打包部署时java/war包名增加时间戳
war包
Maven=>打包部署时java/war包名增加时间戳

  1. <plugins></plugins>使用build-helper-maven-plugin
<build>
    <finalName>ProjectName-${current.time}</finalName>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.9.1</version>
            <executions>
                <execution>
                    <id>timestamp-property</id>
                    <goals>
                        <goal>timestamp-property</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <name>current.time</name>
                <pattern>yyyyMMdd-HHmmss</pattern>
                <timeZone>GMT+8</timeZone>
            </configuration>
        </plugin>
    </plugins>
</build>