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
38
39
40 @Deprecated
41 @Component( role = MavenProfilesBuilder.class )
42 public class DefaultMavenProfilesBuilder
43 extends AbstractLogEnabled
44 implements MavenProfilesBuilder
45 {
46 private static final String PROFILES_XML_FILE = "profiles.xml";
47
48 public ProfilesRoot buildProfiles( File basedir )
49 throws IOException, XmlPullParserException
50 {
51 File profilesXml = new File( basedir, PROFILES_XML_FILE );
52
53 ProfilesRoot profilesRoot = null;
54
55 if ( profilesXml.exists() )
56 {
57 ProfilesXpp3Reader reader = new ProfilesXpp3Reader();
58 try ( Reader profileReader = ReaderFactory.newXmlReader( profilesXml );
59 StringWriter sWriter = new StringWriter() )
60 {
61 IOUtil.copy( profileReader, sWriter );
62
63 String rawInput = sWriter.toString();
64
65 try
66 {
67 RegexBasedInterpolator interpolator = new RegexBasedInterpolator();
68 interpolator.addValueSource( new EnvarBasedValueSource() );
69
70 rawInput = interpolator.interpolate( rawInput, "settings" );
71 }
72 catch ( Exception e )
73 {
74 getLogger().warn(
75 "Failed to initialize environment variable resolver. Skipping environment " + "substitution in "
76 + PROFILES_XML_FILE + "." );
77 getLogger().debug( "Failed to initialize envar resolver. Skipping resolution.", e );
78 }
79
80 StringReader sReader = new StringReader( rawInput );
81
82 profilesRoot = reader.read( sReader );
83 }
84
85 }
86
87 return profilesRoot;
88 }
89
90 }