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