1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.codehaus.mojo.properties;
17
18 import java.util.ArrayList;
19 import java.util.Collections;
20 import java.util.List;
21 import java.util.Properties;
22
23 import org.apache.commons.lang.StringUtils;
24 import org.apache.maven.plugin.AbstractMojo;
25 import org.apache.maven.plugin.MojoExecutionException;
26 import org.apache.maven.project.MavenProject;
27 import org.jasypt.util.text.BasicTextEncryptor;
28
29
30
31
32
33
34
35
36 public class DecryptAllPropertiesMojo extends AbstractMojo {
37
38
39
40
41
42
43 private MavenProject project;
44
45
46
47
48
49
50 private boolean includeSystemProperties;
51
52
53
54
55
56
57 private boolean includeEnvironmentVariables;
58
59
60
61
62
63
64
65 private boolean quiet;
66
67
68
69
70
71
72
73 private String endsWith;
74
75
76
77
78
79
80
81 private boolean show;
82
83
84
85
86
87
88
89 private String password;
90
91 @Override
92 public void execute() throws MojoExecutionException {
93 BasicTextEncryptor encryptor = new BasicTextEncryptor();
94 encryptor.setPassword(password);
95 Properties props = new Properties();
96 props.putAll(project.getProperties());
97 if (includeEnvironmentVariables) {
98 props.putAll(WriteProjectProperties.getEnvironmentVariables());
99 }
100 if (includeSystemProperties) {
101 props.putAll(System.getProperties());
102 }
103 List<String> keys = new ArrayList<String>(props.stringPropertyNames());
104 Collections.sort(keys);
105 for (String key : keys) {
106 boolean decrypt = key.endsWith(endsWith);
107 if (!decrypt) {
108 continue;
109 }
110 String value = getProperty(key);
111 if (StringUtils.isBlank(value) && !quiet) {
112 getLog().info("Skipping blank property " + key);
113 continue;
114 }
115 String newValue = encryptor.decrypt(value);
116 int length = endsWith.length();
117 String newKey = key.substring(0, key.length() - length);
118 project.getProperties().setProperty(newKey, newValue);
119 if (quiet) {
120 continue;
121 }
122 if (show) {
123 getLog().info("Setting " + newKey + "=" + newValue + " - " + value);
124 } else {
125 getLog().info("Setting " + newKey);
126 }
127 }
128 }
129
130 protected String getProperty(String key) {
131 String sys = System.getProperty(key);
132 String proj = project.getProperties().getProperty(key);
133 if (!StringUtils.isBlank(sys)) {
134 return sys;
135 } else {
136 return proj;
137 }
138 }
139
140 public boolean isQuiet() {
141 return quiet;
142 }
143
144 public void setQuiet(boolean quiet) {
145 this.quiet = quiet;
146 }
147
148 public String getEndsWith() {
149 return endsWith;
150 }
151
152 public void setEndsWith(String endsWith) {
153 this.endsWith = endsWith;
154 }
155
156 public boolean isShow() {
157 return show;
158 }
159
160 public void setShow(boolean show) {
161 this.show = show;
162 }
163
164 public String getPassword() {
165 return password;
166 }
167
168 public void setPassword(String password) {
169 this.password = password;
170 }
171
172 public MavenProject getProject() {
173 return project;
174 }
175
176 public boolean isIncludeSystemProperties() {
177 return includeSystemProperties;
178 }
179
180 public void setIncludeSystemProperties(boolean includeSystemProperties) {
181 this.includeSystemProperties = includeSystemProperties;
182 }
183
184 public boolean isIncludeEnvironmentVariables() {
185 return includeEnvironmentVariables;
186 }
187
188 public void setIncludeEnvironmentVariables(boolean includeEnvironmentVariables) {
189 this.includeEnvironmentVariables = includeEnvironmentVariables;
190 }
191 }