1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.model.interpolation;
20
21 import java.text.SimpleDateFormat;
22 import java.util.Date;
23 import java.util.GregorianCalendar;
24 import java.util.Properties;
25 import java.util.TimeZone;
26
27
28
29
30 public class MavenBuildTimestamp {
31
32 public static final String DEFAULT_BUILD_TIMESTAMP_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
33
34 public static final String BUILD_TIMESTAMP_FORMAT_PROPERTY = "maven.build.timestamp.format";
35
36 public static final TimeZone DEFAULT_BUILD_TIME_ZONE = TimeZone.getTimeZone("Etc/UTC");
37
38 private String formattedTimestamp;
39
40 public MavenBuildTimestamp() {
41 this(new Date());
42 }
43
44 public MavenBuildTimestamp(Date time) {
45 this(time, DEFAULT_BUILD_TIMESTAMP_FORMAT);
46 }
47
48 public MavenBuildTimestamp(Date time, Properties properties) {
49 this(time, properties != null ? properties.getProperty(BUILD_TIMESTAMP_FORMAT_PROPERTY) : null);
50 }
51
52 public MavenBuildTimestamp(Date time, String timestampFormat) {
53 if (timestampFormat == null) {
54 timestampFormat = DEFAULT_BUILD_TIMESTAMP_FORMAT;
55 }
56 if (time == null) {
57 time = new Date();
58 }
59 SimpleDateFormat dateFormat = new SimpleDateFormat(timestampFormat);
60 dateFormat.setCalendar(new GregorianCalendar());
61 dateFormat.setTimeZone(DEFAULT_BUILD_TIME_ZONE);
62 formattedTimestamp = dateFormat.format(time);
63 }
64
65 public String formattedTimestamp() {
66 return formattedTimestamp;
67 }
68 }