Jenkins、SVN、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
来覆盖maven
的timestamp
变量:
<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中这样所有子集项目都可以继承