diff --git a/src/it/projects/disabled-for-goal/invoker.properties b/src/it/projects/disabled-for-goal/invoker.properties new file mode 100644 index 00000000..a0967a8a --- /dev/null +++ b/src/it/projects/disabled-for-goal/invoker.properties @@ -0,0 +1,2 @@ +invoker.name = TEST for goal +invoker.goals = -e generate-sources -D partial.disableOnGoal=generate-sources diff --git a/src/it/projects/disabled-for-goal/pom.xml b/src/it/projects/disabled-for-goal/pom.xml new file mode 100644 index 00000000..c932c7b9 --- /dev/null +++ b/src/it/projects/disabled-for-goal/pom.xml @@ -0,0 +1,39 @@ + + + 4.0.0 + + + child1 + child2 + child3 + child4 + child5 + child6 + child7 + + + parent + parent + 1.0-SNAPSHOT + pom + + + + + com.lesfurets + partial-build-plugin + @project.version@ + true + + true + false + refs/heads/develop + refs/heads/feature/1 + + + + + + diff --git a/src/it/projects/disabled-for-goal/setup.groovy b/src/it/projects/disabled-for-goal/setup.groovy new file mode 100644 index 00000000..e806c74e --- /dev/null +++ b/src/it/projects/disabled-for-goal/setup.groovy @@ -0,0 +1,8 @@ +import com.lesfurets.maven.partial.mocks.ITHelper + +def testProjectBasedir = basedir as File +def pbpBaseDir = sourceDir as String +def pbpVersion = projectVersion as String +new ITHelper(testProjectBasedir, pbpBaseDir, pbpVersion).setupTest() + +return true \ No newline at end of file diff --git a/src/it/projects/disabled-for-goal/verify.groovy b/src/it/projects/disabled-for-goal/verify.groovy new file mode 100644 index 00000000..f11b881d --- /dev/null +++ b/src/it/projects/disabled-for-goal/verify.groovy @@ -0,0 +1,23 @@ +import org.codehaus.plexus.util.FileUtils + +def file = new File(basedir, "build.log") +String buildLog = FileUtils.fileRead(file) + +boolean verified = true +verified &= buildLog.contains(" subchild2") +verified &= buildLog.contains(" child3") +verified &= buildLog.contains(" child4") +verified &= buildLog.contains(" subchild41") + +verified &= buildLog.contains(" child1") +verified &= buildLog.contains(" child2") +verified &= buildLog.contains(" child5") +verified &= buildLog.contains(" child6") +verified &= buildLog.contains(" child7") +verified &= buildLog.contains(" subchild1") +verified &= buildLog.contains(" subchild42") +verified &= buildLog.contains(" parent") + +verified &= buildLog.contains("Partial build was disable for goal: [generate-sources]") + +return verified; diff --git a/src/main/java/com/lesfurets/maven/partial/core/Configuration.java b/src/main/java/com/lesfurets/maven/partial/core/Configuration.java index 78355e6a..1c037708 100644 --- a/src/main/java/com/lesfurets/maven/partial/core/Configuration.java +++ b/src/main/java/com/lesfurets/maven/partial/core/Configuration.java @@ -49,6 +49,7 @@ public class Configuration { public final boolean ignoreAllReactorProjects; public final boolean useNativeGit; public final String rootDirectory; + public final List disabledOnGoals; @Inject public Configuration(MavenSession session) throws IOException { @@ -83,6 +84,7 @@ public Configuration(MavenSession session) throws IOException { buildAnywaysPattern = Property.buildAnyways.getValue(); buildAnywaysProjects = getBuildAnywaysProjects(session, buildAnywaysPattern); useNativeGit = Boolean.valueOf(Property.useNativeGit.getValue()); + disabledOnGoals = separatePattern(Property.disableOnGoal.getValue()); rootDirectory = session.getExecutionRootDirectory(); } catch (Exception e) { throw new RuntimeException(e); diff --git a/src/main/java/com/lesfurets/maven/partial/core/Property.java b/src/main/java/com/lesfurets/maven/partial/core/Property.java index e9445467..693ef2eb 100644 --- a/src/main/java/com/lesfurets/maven/partial/core/Property.java +++ b/src/main/java/com/lesfurets/maven/partial/core/Property.java @@ -3,6 +3,7 @@ public enum Property { enabled("true"), + disableOnGoal(""), repositorySshKey(""), referenceBranch("refs/remotes/origin/develop"), baseBranch("HEAD"), diff --git a/src/main/java/com/lesfurets/maven/partial/extension/MavenLifecycleParticipant.java b/src/main/java/com/lesfurets/maven/partial/extension/MavenLifecycleParticipant.java index 5d69f9dc..87820ae6 100644 --- a/src/main/java/com/lesfurets/maven/partial/extension/MavenLifecycleParticipant.java +++ b/src/main/java/com/lesfurets/maven/partial/extension/MavenLifecycleParticipant.java @@ -26,7 +26,9 @@ public void afterProjectsRead(MavenSession session) throws MavenExecutionExcepti logger.info(configuration.toString()); try { - if (configuration.enabled) { + if (configuration.disabledOnGoals.stream().anyMatch(disableForGoal -> session.getRequest().getGoals().contains(disableForGoal))) { + logger.info("Partial build was disable for goal: " + configuration.disabledOnGoals); + } else if (configuration.enabled) { logger.info("Starting Partial build..."); injector.getInstance(UnchangedProjectsRemover.class).act(); } else {