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.Map;
25 import java.util.Properties;
26 import java.util.TimeZone;
27
28
29
30
31 public class MavenBuildTimestamp {
32
33 public static final String DEFAULT_BUILD_TIMESTAMP_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
34
35 public static final String BUILD_TIMESTAMP_FORMAT_PROPERTY = "maven.build.timestamp.format";
36
37 public static final TimeZone DEFAULT_BUILD_TIME_ZONE = TimeZone.getTimeZone("Etc/UTC");
38
39 private String formattedTimestamp;
40
41 public MavenBuildTimestamp() {
42 this(new Date());
43 }
44
45 public MavenBuildTimestamp(Date time) {
46 this(time, DEFAULT_BUILD_TIMESTAMP_FORMAT);
47 }
48
49 public MavenBuildTimestamp(Date time, Map<String, String> properties) {
50 this(time, properties != null ? properties.get(BUILD_TIMESTAMP_FORMAT_PROPERTY) : null);
51 }
52
53
54
55
56
57
58 @Deprecated
59 public MavenBuildTimestamp(Date time, Properties properties) {
60 this(time, properties != null ? properties.getProperty(BUILD_TIMESTAMP_FORMAT_PROPERTY) : null);
61 }
62
63 public MavenBuildTimestamp(Date time, String timestampFormat) {
64 if (timestampFormat == null) {
65 timestampFormat = DEFAULT_BUILD_TIMESTAMP_FORMAT;
66 }
67 if (time == null) {
68 time = new Date();
69 }
70 SimpleDateFormat dateFormat = new SimpleDateFormat(timestampFormat);
71 dateFormat.setCalendar(new GregorianCalendar());
72 dateFormat.setTimeZone(DEFAULT_BUILD_TIME_ZONE);
73 formattedTimestamp = dateFormat.format(time);
74 }
75
76 public String formattedTimestamp() {
77 return formattedTimestamp;
78 }
79 }