diff --git a/maven/src/main/java/pl/project13/maven/git/GitCommitIdMojo.java b/maven/src/main/java/pl/project13/maven/git/GitCommitIdMojo.java index 1d2882a9..67a4f4ad 100644 --- a/maven/src/main/java/pl/project13/maven/git/GitCommitIdMojo.java +++ b/maven/src/main/java/pl/project13/maven/git/GitCommitIdMojo.java @@ -29,6 +29,7 @@ import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.PluginParameterExpressionEvaluator; import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; @@ -386,9 +387,6 @@ public class GitCommitIdMojo extends AbstractMojo { @Nonnull private PropertiesFilterer propertiesFilterer = new PropertiesFilterer(log); - @Nonnull - PropertiesReplacer propertiesReplacer = new PropertiesReplacer(log); - @Override public void execute() throws MojoExecutionException { try { @@ -490,6 +488,7 @@ public void execute() throws MojoExecutionException { loadGitData(properties); loadBuildData(properties); + PropertiesReplacer propertiesReplacer = new PropertiesReplacer(log, new PluginParameterExpressionEvaluator(session)); propertiesReplacer.performReplacement(properties, replacementProperties); propertiesFilterer.filter(properties, includeOnlyProperties, this.prefixDot); propertiesFilterer.filterNot(properties, excludeProperties, this.prefixDot); diff --git a/maven/src/main/java/pl/project13/maven/git/PropertiesReplacer.java b/maven/src/main/java/pl/project13/maven/git/PropertiesReplacer.java index ba79f7e5..f83045d2 100644 --- a/maven/src/main/java/pl/project13/maven/git/PropertiesReplacer.java +++ b/maven/src/main/java/pl/project13/maven/git/PropertiesReplacer.java @@ -17,19 +17,19 @@ package pl.project13.maven.git; +import org.apache.maven.plugin.PluginParameterExpressionEvaluator; import pl.project13.core.log.LoggerBridge; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Properties; +import java.util.*; import java.util.regex.Pattern; public class PropertiesReplacer { private final LoggerBridge log; + private final PluginParameterExpressionEvaluator expressionEvaluator; - public PropertiesReplacer(LoggerBridge log) { + public PropertiesReplacer(LoggerBridge log, PluginParameterExpressionEvaluator expressionEvaluator) { this.log = log; + this.expressionEvaluator = expressionEvaluator; } /** @@ -81,7 +81,12 @@ private void performReplacementOnSingleProperty(Properties properties, Replaceme } private String performReplacement(ReplacementProperty replacementProperty, String content) { - String result = content; + String result = ""; + try { + result = Optional.ofNullable(expressionEvaluator.evaluate(content)).map(x -> x.toString()).orElse(""); + } catch (Exception e) { + log.error("Something went wrong performing the replacement.", e); + } if (replacementProperty != null) { result = performTransformationRules(replacementProperty, result, TransformationRule.ApplyEnum.BEFORE); if (replacementProperty.isRegex()) { diff --git a/maven/src/test/java/pl/project13/maven/git/PropertiesReplacerTest.java b/maven/src/test/java/pl/project13/maven/git/PropertiesReplacerTest.java index a501bcb2..36bc0465 100644 --- a/maven/src/test/java/pl/project13/maven/git/PropertiesReplacerTest.java +++ b/maven/src/test/java/pl/project13/maven/git/PropertiesReplacerTest.java @@ -19,6 +19,7 @@ import junitparams.JUnitParamsRunner; import junitparams.Parameters; +import org.apache.maven.plugin.PluginParameterExpressionEvaluator; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -35,7 +36,10 @@ import java.util.Properties; import static java.util.Arrays.asList; +import static org.mockito.AdditionalAnswers.returnsFirstArg; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; @RunWith(JUnitParamsRunner.class) public class PropertiesReplacerTest { @@ -46,8 +50,10 @@ public static Collection useRegexReplacement() { private PropertiesReplacer propertiesReplacer; @Before - public void setUp() { - this.propertiesReplacer = new PropertiesReplacer(mock(MavenLoggerBridge.class)); + public void setUp() throws Throwable { + PluginParameterExpressionEvaluator pluginParameterExpressionEvaluator = mock(PluginParameterExpressionEvaluator.class); + when(pluginParameterExpressionEvaluator.evaluate(anyString())).then(returnsFirstArg()); + this.propertiesReplacer = new PropertiesReplacer(mock(MavenLoggerBridge.class), pluginParameterExpressionEvaluator); } @Test