diff --git a/maven_plugin/src/main/java/io/github/chains_project/maven_lockfile/AbstractLockfileMojo.java b/maven_plugin/src/main/java/io/github/chains_project/maven_lockfile/AbstractLockfileMojo.java index 4f68e447f..a6f1c2d6a 100644 --- a/maven_plugin/src/main/java/io/github/chains_project/maven_lockfile/AbstractLockfileMojo.java +++ b/maven_plugin/src/main/java/io/github/chains_project/maven_lockfile/AbstractLockfileMojo.java @@ -43,20 +43,20 @@ public abstract class AbstractLockfileMojo extends AbstractMojo { @Component protected RepositorySystem repositorySystem; - @Parameter(property = "includeMavenPlugins", defaultValue = "false") - protected boolean includeMavenPlugins; + @Parameter(property = "includeMavenPlugins") + protected Boolean includeMavenPlugins; - @Parameter(property = "allowValidationFailure", defaultValue = "false") - protected boolean allowValidationFailure; + @Parameter(property = "allowValidationFailure") + protected Boolean allowValidationFailure; - @Parameter(property = "allowPomValidationFailure", defaultValue = "false") - protected boolean allowPomValidationFailure; + @Parameter(property = "allowPomValidationFailure") + protected Boolean allowPomValidationFailure; - @Parameter(property = "allowEnvironmentalValidationFailure", defaultValue = "false") - protected boolean allowEnvironmentalValidationFailure; + @Parameter(property = "allowEnvironmentalValidationFailure") + protected Boolean allowEnvironmentalValidationFailure; - @Parameter(property = "includeEnvironment", defaultValue = "true") - protected boolean includeEnvironment; + @Parameter(property = "includeEnvironment") + protected Boolean includeEnvironment; @Parameter(defaultValue = "${maven.version}") protected String mavenVersion; @@ -137,17 +137,24 @@ protected Config getConfig() { String chosenChecksumAlgorithm = Strings.isNullOrEmpty(checksumAlgorithm) ? "SHA-256" : checksumAlgorithm; ChecksumModes chosenChecksumMode = Strings.isNullOrEmpty(checksumMode) ? ChecksumModes.LOCAL : ChecksumModes.fromName(checksumMode); - Config.MavenPluginsInclusion mavenPluginsInclusion = - includeMavenPlugins ? Config.MavenPluginsInclusion.Include : Config.MavenPluginsInclusion.Exclude; - Config.OnValidationFailure onValidationFailure = - allowValidationFailure ? Config.OnValidationFailure.Warn : Config.OnValidationFailure.Error; - Config.OnPomValidationFailure onPomValidationFailure = - allowPomValidationFailure ? Config.OnPomValidationFailure.Warn : Config.OnPomValidationFailure.Error; - Config.OnEnvironmentalValidationFailure onEnvironmentalValidationFailure = allowEnvironmentalValidationFailure - ? Config.OnEnvironmentalValidationFailure.Warn - : Config.OnEnvironmentalValidationFailure.Error; - Config.EnvironmentInclusion environmentInclusion = - includeEnvironment ? Config.EnvironmentInclusion.Include : Config.EnvironmentInclusion.Exclude; + // includeMavenPlugins defaults to true when not explicitly set + Config.MavenPluginsInclusion mavenPluginsInclusion = Boolean.FALSE.equals(includeMavenPlugins) + ? Config.MavenPluginsInclusion.Exclude + : Config.MavenPluginsInclusion.Include; + Config.OnValidationFailure onValidationFailure = Boolean.TRUE.equals(allowValidationFailure) + ? Config.OnValidationFailure.Warn + : Config.OnValidationFailure.Error; + Config.OnPomValidationFailure onPomValidationFailure = Boolean.TRUE.equals(allowPomValidationFailure) + ? Config.OnPomValidationFailure.Warn + : Config.OnPomValidationFailure.Error; + Config.OnEnvironmentalValidationFailure onEnvironmentalValidationFailure = + Boolean.TRUE.equals(allowEnvironmentalValidationFailure) + ? Config.OnEnvironmentalValidationFailure.Warn + : Config.OnEnvironmentalValidationFailure.Error; + // includeEnvironment defaults to true when not explicitly set + Config.EnvironmentInclusion environmentInclusion = Boolean.FALSE.equals(includeEnvironment) + ? Config.EnvironmentInclusion.Exclude + : Config.EnvironmentInclusion.Include; Config.ReductionState reductionState = reduced ? Config.ReductionState.Reduced : Config.ReductionState.NonReduced; @@ -177,22 +184,27 @@ protected ProjectBuildingRequest newResolvePluginProjectBuildingRequest() throws /** * Returns a Config that starts from {@code base} (typically the stored lockfile config) and overrides - * only the fields for which a boolean flag was explicitly set to {@code true}. When a flag is - * {@code false} (the default), the stored value is preserved so that existing lockfile configs are - * not silently tightened by plugin defaults. + * only the fields that were explicitly set via CLI or pom.xml configuration (non-null). When a flag + * is null (not explicitly set), the stored value from the lockfile config is preserved. */ protected Config mergeConfigWithCliArgs(Config base) { - Config.MavenPluginsInclusion pluginsInclusion = - includeMavenPlugins ? Config.MavenPluginsInclusion.Include : base.getMavenPluginsInclusion(); - Config.OnValidationFailure onValidationFailure = - allowValidationFailure ? Config.OnValidationFailure.Warn : base.getOnValidationFailure(); - Config.OnPomValidationFailure onPomValidationFailure = - allowPomValidationFailure ? Config.OnPomValidationFailure.Warn : base.getOnPomValidationFailure(); - Config.OnEnvironmentalValidationFailure onEnvFailure = allowEnvironmentalValidationFailure - ? Config.OnEnvironmentalValidationFailure.Warn + Config.MavenPluginsInclusion pluginsInclusion = includeMavenPlugins != null + ? (includeMavenPlugins ? Config.MavenPluginsInclusion.Include : Config.MavenPluginsInclusion.Exclude) + : base.getMavenPluginsInclusion(); + Config.OnValidationFailure onValidationFailure = allowValidationFailure != null + ? (allowValidationFailure ? Config.OnValidationFailure.Warn : Config.OnValidationFailure.Error) + : base.getOnValidationFailure(); + Config.OnPomValidationFailure onPomValidationFailure = allowPomValidationFailure != null + ? (allowPomValidationFailure ? Config.OnPomValidationFailure.Warn : Config.OnPomValidationFailure.Error) + : base.getOnPomValidationFailure(); + Config.OnEnvironmentalValidationFailure onEnvFailure = allowEnvironmentalValidationFailure != null + ? (allowEnvironmentalValidationFailure + ? Config.OnEnvironmentalValidationFailure.Warn + : Config.OnEnvironmentalValidationFailure.Error) : base.getOnEnvironmentalValidationFailure(); - Config.EnvironmentInclusion environmentInclusion = - includeEnvironment ? Config.EnvironmentInclusion.Include : base.getEnvironmentInclusion(); + Config.EnvironmentInclusion environmentInclusion = includeEnvironment != null + ? (includeEnvironment ? Config.EnvironmentInclusion.Include : Config.EnvironmentInclusion.Exclude) + : base.getEnvironmentInclusion(); return new Config( pluginsInclusion, onValidationFailure, diff --git a/maven_plugin/src/test/java/io/github/chains_project/maven_lockfile/ValidateMojoTest.java b/maven_plugin/src/test/java/io/github/chains_project/maven_lockfile/ValidateMojoTest.java index 5ed2e66c9..9e6a23f48 100644 --- a/maven_plugin/src/test/java/io/github/chains_project/maven_lockfile/ValidateMojoTest.java +++ b/maven_plugin/src/test/java/io/github/chains_project/maven_lockfile/ValidateMojoTest.java @@ -46,7 +46,7 @@ void cliArgOverridesStoredConfig() { @Test void storedConfigUsedWhenCliArgNotSet() { var m = mojo(); - assertThat(m.allowEnvironmentalValidationFailure).isFalse(); + assertThat(m.allowEnvironmentalValidationFailure).isNull(); Config merged = m.mergeConfigWithCliArgs(storedConfig()); assertThat(merged.getOnEnvironmentalValidationFailure())