1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.profiles;
20
21 import java.io.File;
22 import java.io.IOException;
23 import java.io.Reader;
24 import java.io.StringReader;
25 import java.io.StringWriter;
26 import org.apache.maven.profiles.io.xpp3.ProfilesXpp3Reader;
27 import org.codehaus.plexus.component.annotations.Component;
28 import org.codehaus.plexus.interpolation.EnvarBasedValueSource;
29 import org.codehaus.plexus.interpolation.RegexBasedInterpolator;
30 import org.codehaus.plexus.logging.AbstractLogEnabled;
31 import org.codehaus.plexus.util.IOUtil;
32 import org.codehaus.plexus.util.ReaderFactory;
33 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
34
35
36
37
38 @Deprecated
39 @Component(role = MavenProfilesBuilder.class)
40 public class DefaultMavenProfilesBuilder extends AbstractLogEnabled implements MavenProfilesBuilder {
41 private static final String PROFILES_XML_FILE = "profiles.xml";
42
43 public ProfilesRoot buildProfiles(File basedir) throws IOException, XmlPullParserException {
44 File profilesXml = new File(basedir, PROFILES_XML_FILE);
45
46 ProfilesRoot profilesRoot = null;
47
48 if (profilesXml.exists()) {
49 ProfilesXpp3Reader reader = new ProfilesXpp3Reader();
50 try (Reader profileReader = ReaderFactory.newXmlReader(profilesXml);
51 StringWriter sWriter = new StringWriter()) {
52 IOUtil.copy(profileReader, sWriter);
53
54 String rawInput = sWriter.toString();
55
56 try {
57 RegexBasedInterpolator interpolator = new RegexBasedInterpolator();
58 interpolator.addValueSource(new EnvarBasedValueSource());
59
60 rawInput = interpolator.interpolate(rawInput, "settings");
61 } catch (Exception e) {
62 getLogger()
63 .warn("Failed to initialize environment variable resolver. Skipping environment "
64 + "substitution in " + PROFILES_XML_FILE + ".");
65 getLogger().debug("Failed to initialize envar resolver. Skipping resolution.", e);
66 }
67
68 StringReader sReader = new StringReader(rawInput);
69
70 profilesRoot = reader.read(sReader);
71 }
72 }
73
74 return profilesRoot;
75 }
76 }