public static String interpolate()

in src/main/java/org/apache/maven/plugin/doap/DoapUtil.java [539:591]


    public static String interpolate(String value, final MavenProject project, Settings settings) {
        if (project == null) {
            throw new IllegalArgumentException("project is required");
        }

        if (value == null) {
            return value;
        }

        if (!value.contains("${")) {
            return value.trim();
        }

        RegexBasedInterpolator interpolator = new RegexBasedInterpolator();
        try {
            interpolator.addValueSource(new EnvarBasedValueSource());
        } catch (IOException e) {
            // ignore
        }
        interpolator.addValueSource(new PropertiesBasedValueSource(System.getProperties()));
        interpolator.addValueSource(new PropertiesBasedValueSource(project.getProperties()));
        interpolator.addValueSource(new PrefixedObjectValueSource("project", project));
        interpolator.addValueSource(new PrefixedObjectValueSource("pom", project));
        interpolator.addValueSource(new ObjectBasedValueSource(project) {
            @Override
            public Object getValue(String expression) {
                try {
                    return ReflectionValueExtractor.evaluate(expression, project, true);
                } catch (Exception e) {
                    addFeedback("Failed to extract \'" + expression + "\' from: " + project, e);
                }

                return null;
            }
        });

        if (settings != null) {
            interpolator.addValueSource(new PrefixedObjectValueSource("settings", settings));
        }

        String interpolatedValue = value;
        try {
            interpolatedValue = interpolator.interpolate(value).trim();
        } catch (InterpolationException e) {
            // ignore
        }

        if (interpolatedValue.startsWith("${")) {
            return null;
        }

        return interpolatedValue;
    }