Fork me on GitHub

Jenkins、SVN、MAVEN打包时区问题解决方案

Published on:

目录

  1. Jenkins时区设置问题
  2. SVN更新代码时区问题
  3. MAVEN打包时区问题

一、Jenkins时区设置问题

docker@jenkins:~$ cat /etc/default/jenkins|grep 2048
JAVA_ARGS="-Xmx2048m -Xms2048m -XX:PermSize=512m -XX:MaxPermSize=512m  -Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai  -Djava.awt.headless=true"  # Allow graphs etc. to work even when an X server is present

增加时区参数:-Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai

修改启动后查看jenkins系统参数:

二、SVN更新代码时区问题

svn时区依赖jenkins的时区设置

没有修改时区之前:

能看的出来revision时间是有问题的跟我们机器时间不一致少了8小时

修复这个问题有两个方法

  • 可以通过设置svn路径后增加@HEAD忽略掉revision来修复这个问题,具体设置如下

  • 修改jenkins时区,参考第一个问题
    • jenkins时区设置完之后svn拉取代码会自动修改:revision,如图

三、MAVEN打包时区问题

我项目中使用的是maven自己的timestamp

<timestamp>${maven.build.timestamp}</timestamp>

它的问题是:时区是UTC而且无法修改,如果要使用GMT+8,就需要插件提供支持

使用maven utc的timestamp构建出来的包名如下:

我使用插件:build-helper-maven-plugin

pom中增加plugin build-helper-maven-plugin来覆盖maventimestamp变量:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
                <execution>
                    <id>timestamp-property</id>
                    <goals>
                        <goal>timestamp-property</goal>
                    </goals>
                    <configuration>
                        <name>timestamp</name>
                        <pattern>yyyyMMddHHmm</pattern>
                        <timeZone>GMT+8</timeZone>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

然后打包测试:

测试通过,plugin配置建议配置在parent pom中这样所有子集项目都可以继承

Comments