From 807db4dfb8bd44eda4c2b46f20357a3aa244c408 Mon Sep 17 00:00:00 2001 From: "Brian M. Long" Date: Fri, 25 Apr 2025 00:04:00 -0400 Subject: [PATCH] better property fetch ordering; fix for multi-module projects --- .../StandardProjectPropertyResolver.java | 51 ++++++++++--------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/inteligr8/maven/StandardProjectPropertyResolver.java b/src/main/java/com/inteligr8/maven/StandardProjectPropertyResolver.java index 8e95447..0418c5d 100644 --- a/src/main/java/com/inteligr8/maven/StandardProjectPropertyResolver.java +++ b/src/main/java/com/inteligr8/maven/StandardProjectPropertyResolver.java @@ -21,9 +21,10 @@ import org.apache.maven.model.Profile; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; +import org.codehaus.plexus.logging.AbstractLogEnabled; -@Component(role = ProjectPropertyResolver.class) -public class StandardProjectPropertyResolver implements ProjectPropertyResolver { +@Component(role = ProjectPropertyResolver.class, instantiationStrategy = "per-lookup") +public class StandardProjectPropertyResolver extends AbstractLogEnabled implements ProjectPropertyResolver { @Requirement private MavenSession session; @@ -51,34 +52,38 @@ public class StandardProjectPropertyResolver implements ProjectPropertyResolver private Properties findPropertiesObject(String key) { // search the user/cli properties first Properties props = this.session.getUserProperties(); - if (props.containsKey(key)) + if (props.containsKey(key)) { + this.getLogger().debug("Found in session user properties: " + key); return props; - - // search the profiles next; in order (FIXME maybe we should go backwards?) - for (Profile profile : this.project.getActiveProfiles()) { - props = profile.getProperties(); - if (props.containsKey(key)) - return props; } - // now look at the project props - props = this.project.getProperties(); - if (props.containsKey(key)) - return props; - - // now recursively look up the parent project props - MavenProject ancestor = this.project.getParent(); - while (ancestor != null) { - props = ancestor.getProperties(); - if (props.containsKey(key)) - return props; - ancestor = ancestor.getParent(); - } + MavenProject ancestor = this.project; + while (ancestor != null) { + // search the profiles next; in order (FIXME maybe we should go backwards?) + for (Profile profile : ancestor.getActiveProfiles()) { + props = profile.getProperties(); + if (props.containsKey(key)) { + this.getLogger().debug("Found in project profile properties: " + ancestor.getArtifact() + ": " + profile.getId() + ": " + key); + return props; + } + } + + // now look at the project props + props = ancestor.getProperties(); + if (props.containsKey(key)) { + this.getLogger().debug("Found in project properties: " + ancestor.getArtifact() + ": " + key); + return props; + } + + ancestor = ancestor.getParent(); + } // search the system properties last (FIXME is this right?) props = this.session.getSystemProperties(); - if (props.containsKey(key)) + if (props.containsKey(key)) { + this.getLogger().debug("Found in system properties: " + key); return props; + } return null; }