Maven pom.xml文件获取当前时间戳方式
Maven pom.xml文件获取当前时间戳
今天发布项目到测试环境,发布完成后,一直启动不起来,查看日志发现java.lang.OutOfMemoryError: Java heap space.
java.lang.OutOfMemoryError: Java heap space
Dumping heap to /dump/dump.hprof
Unable to create /dump/dump.hprof: File exists
原Maven pom.xml配置如下
-XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/dump/dump.hprof
问题
所以每次系统出现OutOfMemoryError时,系统自动会dump内存快照到/dump/dump.hprof文件里. 如果第一次dump完成后,第二次就会提示File exists
解决方案
在dump.hprof文件后面添加时间戳
新Maven pom.xml配置如下
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 设置时间格式 --> <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format> </properties> -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/dump/dump${maven.build.timestamp}.hprof
如果再出现OutOfMemoryError错误, dump下来的文件 /dump/dump20181206112111.hprof
Maven打包加时间戳方法总结
基于Maven的项目,发布时需要打包,如tar.gz。web项目打成war格式包。每次打包时希望自己加上时间戳,假如我的项目名是myproject,默认打包后名为myproject.war。而我希望的名字为myproject-1.0.0-20160217。方便以后对包进行查找与管理,如何实现这种效果呢?
1.使用maven自带的属性
设置时间戳格式:在pom.xml文件中加入以下配置
<properties> <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format> </properties>
在打包plugin中引用该属性
<finalName> ${project.artifactId}-${project.version}_${maven.build.timestamp} </finalName>
Maven自带时间戳使用${maven.build.timestamp},但是时区是UTC。
如果要使用GMT+8,就需要插件提供支持,以下两个插件可以实现。
2.使用buildnubmer-maven-plugin
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>buildnumber-maven-plugin</artifactId> <version>1.4</version> <configuration> <timestampFormat>yyyyMMdd</timestampFormat> </configuration> <executions> <execution> <goals> <goal>create-timestamp</goal> </goals> </execution> </executions> <inherited>false</inherited> </plugin>
默认属性是timestamp,在打包plugin中引用该属性
<finalName> ${project.artifactId}-${project.version}_${timestamp} </finalName>
3.使用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>
将以上的几种方式配置分别加入到自己的pom.xml文件中,打个包试试,是不是自己加上了时间戳
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
一文搞懂Mybatis中Mapper配置文件获取参数的五种方式
这篇文章主要介绍了Mybatis中Mapper配置文件获取参数的五种方式,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下2024-03-03Java concurrency之AtomicLongFieldUpdater原子类_动力节点Java学院整理
AtomicLongFieldUpdater可以对指定"类的 'volatile long'类型的成员"进行原子更新。它是基于反射原理实现的。下面通过本文给大家分享Java concurrency之AtomicLongFieldUpdater原子类的相关知识,感兴趣的朋友一起看看吧2017-06-06java在linux系统下开机启动无法使用sudo命令的原因及解决办法
每次开机自动启动的java进程,页面上的关机按钮都无法实现关机功能,但是此时如果以chb账号通过ssh登录该服务器,手动杀掉tomcat进程,然后再重新启动tomcat,页面上的关机按钮就有效了2013-08-08Spring Boot Actuator监控器配置及使用解析
这篇文章主要介绍了Spring Boot Actuator监控器配置及使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-07-07
最新评论