1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  package org.apache.maven.plugins.invoker;
20  
21  import javax.inject.Inject;
22  import javax.inject.Named;
23  
24  import org.apache.maven.plugin.MojoExecutionException;
25  import org.apache.maven.project.MavenProject;
26  import org.codehaus.plexus.interpolation.InterpolationException;
27  import org.codehaus.plexus.interpolation.Interpolator;
28  import org.codehaus.plexus.interpolation.MapBasedValueSource;
29  import org.codehaus.plexus.interpolation.RegexBasedInterpolator;
30  
31  
32  
33  
34  @Named
35  class InterpolatorUtils {
36  
37      private final Interpolator atInterpolator;
38  
39      
40  
41  
42  
43  
44      @Inject
45      InterpolatorUtils(MavenProject mavenProject) {
46          atInterpolator = new RegexBasedInterpolator("[@\\$]\\{(.+?)", "}");
47          atInterpolator.addValueSource(new MapBasedValueSource(mavenProject.getProperties()));
48      }
49  
50      public String interpolateAtPattern(String value) throws MojoExecutionException {
51  
52          if (value == null || !(value.contains("@{") || value.contains("${"))) {
53              return value;
54          }
55  
56          try {
57              return atInterpolator.interpolate(value);
58          } catch (InterpolationException e) {
59              throw new MojoExecutionException(e.getMessage(), e);
60          }
61      }
62  }