diff --git a/src/main/java/org/jboss/fuse/mvnd/builder/SmartBuilder.java b/src/main/java/org/jboss/fuse/mvnd/builder/SmartBuilder.java index ebe912bf..aa479ce1 100644 --- a/src/main/java/org/jboss/fuse/mvnd/builder/SmartBuilder.java +++ b/src/main/java/org/jboss/fuse/mvnd/builder/SmartBuilder.java @@ -36,6 +36,7 @@ public class SmartBuilder implements Builder { public static final String PROP_PROFILING = "smartbuilder.profiling"; public static final String MVND_BUILDER_RULES = "mvnd.builder.rules"; + public static final String MVND_BUILDER_RULE = "mvnd.builder.rule"; private final Logger logger = LoggerFactory.getLogger(getClass()); @@ -52,8 +53,23 @@ public class SmartBuilder implements Builder { ProjectBuildList projectBuilds, final List taskSegments, ReactorBuildStatus reactorBuildStatus) throws ExecutionException, InterruptedException { - String rules = session.getTopLevelProject().getProperties() + List list = new ArrayList<>(); + String topRule = session.getTopLevelProject().getProperties() .getProperty(MVND_BUILDER_RULES); + if (topRule != null) { + list.add(topRule); + } + + session.getAllProjects().forEach(p -> { + String rule = p.getProperties().getProperty(MVND_BUILDER_RULE); + if (rule != null) { + list.add(rule + " before " + p.getGroupId() + ":" + p.getArtifactId()); + } + }); + String rules = null; + if (!list.isEmpty()) { + rules = String.join("\n", rules); + } DependencyGraph graph = DependencyGraph.fromMaven(session.getProjectDependencyGraph(), rules);