This is an automated email from the ASF dual-hosted git repository. sjaranowski pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-enforcer.git
The following commit(s) were added to refs/heads/master by this push: new c69f513 [MENFORCER-458] Move Build-in rules to new API c69f513 is described below commit c69f513d37602e5b93fb695427cd16a5c89b5d05 Author: Slawomir Jaranowski <s.jaranow...@gmail.com> AuthorDate: Tue Jan 17 22:13:08 2023 +0100 [MENFORCER-458] Move Build-in rules to new API Moved rules: - bannedDependencies - banTransitiveDependencies - dependencyConvergence - requireReleaseDeps - requireUpperBoundDeps --- .../dependency}/BanTransitiveDependencies.java | 38 ++-- .../rules/dependency}/BannedDependencies.java | 26 ++- .../rules/dependency}/BannedDependenciesBase.java | 61 +++-- .../rules/dependency}/DependencyConvergence.java | 109 ++++----- .../DependencyVersionMap.java | 10 +- .../rules/dependency}/RequireReleaseDeps.java | 88 +++---- .../rules/dependency}/RequireUpperBoundDeps.java | 29 ++- .../enforcer/rules/dependency/ResolveUtil.java | 107 +++++++++ .../enforcer/rules/utils/ArtifactMatcher.java | 1 - .../maven/enforcer/rules/utils/ArtifactUtils.java | 87 +------ .../src/site/apt/banTransitiveDependencies.apt.vm | 6 +- .../src/site/apt/bannedDependencies.apt.vm | 8 +- .../src/site/apt/dependencyConvergence.apt.vm | 4 +- enforcer-rules/src/site/apt/noSnapshots.apt.vm | 72 ------ .../src/site/apt/requireReleaseDeps.apt.vm | 12 +- .../rules/dependency/BannedDependenciesTest.java | 182 +++++++++++++++ .../rules/dependency/RequireReleaseDepsTest.java | 184 +++++++++++++++ .../dependency/RequireUpperBoundDepsTest.java | 62 +++++ .../enforcer/BannedDependenciesTestSetup.java | 81 ------- .../enforcer/RequireUpperBoundDepsTest.java | 57 ----- .../plugins/enforcer/TestBannedDependencies.java | 252 --------------------- .../plugins/enforcer/TestRequireReleaseDeps.java | 133 ----------- .../src/it/projects/MENFORCER-434/verify.groovy | 2 +- .../ban-transitive-dependencies-fail/verify.groovy | 2 +- .../verify.groovy | 2 +- .../verify.groovy | 2 +- .../verify.groovy | 2 +- .../verify.groovy | 2 +- .../verify.groovy | 2 +- .../verify.groovy | 10 +- .../verify.groovy | 2 +- .../verify.groovy | 2 +- .../require-upper-bound-deps_failure/verify.groovy | 2 +- .../verify.groovy | 2 +- .../verify.groovy | 2 +- 35 files changed, 760 insertions(+), 883 deletions(-) diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BanTransitiveDependencies.java similarity index 86% rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BanTransitiveDependencies.java index 7d96582..212d3e4 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BanTransitiveDependencies.java @@ -16,21 +16,23 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.maven.plugins.enforcer; +package org.apache.maven.enforcer.rules.dependency; + +import javax.inject.Inject; +import javax.inject.Named; import java.util.List; +import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; import org.apache.maven.RepositoryUtils; -import org.apache.maven.enforcer.rule.api.EnforcerRule; import org.apache.maven.enforcer.rule.api.EnforcerRuleException; -import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; +import org.apache.maven.enforcer.rules.AbstractStandardEnforcerRule; import org.apache.maven.enforcer.rules.utils.ArtifactMatcher; import org.apache.maven.enforcer.rules.utils.ArtifactUtils; import org.apache.maven.execution.MavenSession; -import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException; import org.eclipse.aether.artifact.ArtifactTypeRegistry; import org.eclipse.aether.graph.Dependency; import org.eclipse.aether.graph.DependencyNode; @@ -43,7 +45,8 @@ import static java.util.Optional.ofNullable; * * @author Jakub Senko */ -public class BanTransitiveDependencies extends AbstractNonCacheableEnforcerRule implements EnforcerRule { +@Named("banTransitiveDependencies") +public final class BanTransitiveDependencies extends AbstractStandardEnforcerRule { /** * Specify the dependencies that will be ignored. This can be a list of artifacts in the format @@ -63,6 +66,16 @@ public class BanTransitiveDependencies extends AbstractNonCacheableEnforcerRule */ private List<String> includes; + private final MavenSession session; + + private final ResolveUtil resolveUtil; + + @Inject + public BanTransitiveDependencies(MavenSession session, ResolveUtil resolveUtil) { + this.session = Objects.requireNonNull(session); + this.resolveUtil = Objects.requireNonNull(resolveUtil); + } + /** * Searches dependency tree recursively for transitive dependencies that are not excluded, while generating nice * info message along the way. @@ -126,13 +139,7 @@ public class BanTransitiveDependencies extends AbstractNonCacheableEnforcerRule } @Override - public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException { - MavenSession session; - try { - session = (MavenSession) helper.evaluate("${session}"); - } catch (ExpressionEvaluationException e) { - throw new RuntimeException(e); - } + public void execute() throws EnforcerRuleException { ArtifactTypeRegistry artifactTypeRegistry = session.getRepositorySession().getArtifactTypeRegistry(); ArtifactMatcher exclusions = new ArtifactMatcher(excludes, includes); @@ -140,10 +147,15 @@ public class BanTransitiveDependencies extends AbstractNonCacheableEnforcerRule .map(d -> RepositoryUtils.toDependency(d, artifactTypeRegistry)) .collect(Collectors.toSet()); - DependencyNode rootNode = ArtifactUtils.resolveTransitiveDependencies(helper); + DependencyNode rootNode = resolveUtil.resolveTransitiveDependencies(); StringBuilder generatedMessage = new StringBuilder(); if (searchTree(rootNode, 0, exclusions, directDependencies, generatedMessage)) { throw new EnforcerRuleException(ofNullable(getMessage()).orElse(generatedMessage.toString())); } } + + @Override + public String toString() { + return String.format("BanTransitiveDependencies[message=%s, excludes=%s]", getMessage(), excludes); + } } diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedDependencies.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BannedDependencies.java similarity index 66% rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedDependencies.java rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BannedDependencies.java index 6d6596d..77d2e17 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedDependencies.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BannedDependencies.java @@ -16,25 +16,43 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.maven.plugins.enforcer; +package org.apache.maven.enforcer.rules.dependency; + +import javax.inject.Inject; +import javax.inject.Named; import org.apache.maven.artifact.Artifact; import org.apache.maven.enforcer.rules.utils.ArtifactUtils; +import org.apache.maven.execution.MavenSession; /** * This rule checks that lists of dependencies are not included. * * @author <a href="mailto:bri...@apache.org">Brian Fox</a> */ -public class BannedDependencies extends BannedDependenciesBase { +@Named("bannedDependencies") +public final class BannedDependencies extends BannedDependenciesBase { + + @Inject + BannedDependencies(MavenSession session, ResolveUtil resolveUtil) { + super(session, resolveUtil); + } + @Override protected boolean validate(Artifact artifact) { - return !ArtifactUtils.matchDependencyArtifact(artifact, excludes) - || ArtifactUtils.matchDependencyArtifact(artifact, includes); + return !ArtifactUtils.matchDependencyArtifact(artifact, getExcludes()) + || ArtifactUtils.matchDependencyArtifact(artifact, getIncludes()); } @Override protected String getErrorMessage() { return "banned via the exclude/include list"; } + + @Override + public String toString() { + return String.format( + "BannedDependencies[message=%s, excludes=%s, includes=%s, searchTransitive=%b]", + getMessage(), getExcludes(), getIncludes(), isSearchTransitive()); + } } diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedDependenciesBase.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesBase.java similarity index 82% rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedDependenciesBase.java rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesBase.java index e7776ac..4ee240e 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedDependenciesBase.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesBase.java @@ -16,17 +16,17 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.maven.plugins.enforcer; +package org.apache.maven.enforcer.rules.dependency; import java.util.List; +import java.util.Objects; import org.apache.commons.lang3.StringUtils; import org.apache.maven.artifact.Artifact; import org.apache.maven.enforcer.rule.api.EnforcerRuleException; -import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; +import org.apache.maven.enforcer.rules.AbstractStandardEnforcerRule; import org.apache.maven.enforcer.rules.utils.ArtifactUtils; import org.apache.maven.execution.MavenSession; -import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException; import org.eclipse.aether.graph.DependencyNode; /** @@ -34,7 +34,7 @@ import org.eclipse.aether.graph.DependencyNode; * dependency tree by traversing all children and validating every * dependency artifact. */ -abstract class BannedDependenciesBase extends AbstractNonCacheableEnforcerRule { +abstract class BannedDependenciesBase extends AbstractStandardEnforcerRule { /** * Specify the banned dependencies. This can be a list of artifacts in the format @@ -46,7 +46,7 @@ abstract class BannedDependenciesBase extends AbstractNonCacheableEnforcerRule { * @see #setExcludes(List) * @see #getExcludes() */ - protected List<String> excludes = null; + private List<String> excludes = null; /** * Specify the allowed dependencies. This can be a list of artifacts in the format @@ -60,19 +60,26 @@ abstract class BannedDependenciesBase extends AbstractNonCacheableEnforcerRule { * @see #setIncludes(List) * @see #getIncludes() */ - protected List<String> includes = null; + private List<String> includes = null; /** Specify if transitive dependencies should be searched (default) or only look at direct dependencies. */ private boolean searchTransitive = true; + private final MavenSession session; + + private final ResolveUtil resolveUtil; + + BannedDependenciesBase(MavenSession session, ResolveUtil resolveUtil) { + this.session = Objects.requireNonNull(session); + this.resolveUtil = Objects.requireNonNull(resolveUtil); + } + + protected MavenSession getSession() { + return session; + } + @Override - public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException { - MavenSession session; - try { - session = (MavenSession) helper.evaluate("${session}"); - } catch (ExpressionEvaluationException e) { - throw new EnforcerRuleException("Cannot resolve MavenSession", e); - } + public void execute() throws EnforcerRuleException { if (!searchTransitive) { String result = session.getCurrentProject().getDependencyArtifacts().stream() @@ -80,19 +87,28 @@ abstract class BannedDependenciesBase extends AbstractNonCacheableEnforcerRule { .collect( StringBuilder::new, (messageBuilder, node) -> messageBuilder + .append(System.lineSeparator()) .append(node.getId()) .append(" <--- ") .append(getErrorMessage()), (m1, m2) -> m1.append(m2.toString())) .toString(); if (!result.isEmpty()) { - throw new EnforcerRuleException(result); + String message = ""; + if (getMessage() != null) { + message = getMessage() + System.lineSeparator(); + } + throw new EnforcerRuleException(message + result); } } else { StringBuilder messageBuilder = new StringBuilder(); - DependencyNode rootNode = ArtifactUtils.resolveTransitiveDependencies(helper); + DependencyNode rootNode = resolveUtil.resolveTransitiveDependencies(); if (!validate(rootNode, 0, messageBuilder)) { - throw new EnforcerRuleException(messageBuilder.toString()); + String message = ""; + if (getMessage() != null) { + message = getMessage() + System.lineSeparator(); + } + throw new EnforcerRuleException(message + messageBuilder); } } } @@ -127,15 +143,6 @@ abstract class BannedDependenciesBase extends AbstractNonCacheableEnforcerRule { */ protected abstract boolean validate(Artifact dependency); - /** - * Checks if is search transitive. - * - * @return the searchTransitive - */ - public boolean isSearchTransitive() { - return this.searchTransitive; - } - /** * Sets the search transitive. * @@ -193,4 +200,8 @@ abstract class BannedDependenciesBase extends AbstractNonCacheableEnforcerRule { public void setIncludes(List<String> theIncludes) { this.includes = theIncludes; } + + public boolean isSearchTransitive() { + return searchTransitive; + } } diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/DependencyConvergence.java similarity index 55% rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/DependencyConvergence.java index 7d8503b..eb583c7 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/DependencyConvergence.java @@ -16,18 +16,19 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.maven.plugins.enforcer; +package org.apache.maven.enforcer.rules.dependency; + +import javax.inject.Inject; +import javax.inject.Named; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Objects; -import org.apache.maven.enforcer.rule.api.EnforcerRule; import org.apache.maven.enforcer.rule.api.EnforcerRuleException; -import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; +import org.apache.maven.enforcer.rules.AbstractStandardEnforcerRule; import org.apache.maven.enforcer.rules.utils.ArtifactUtils; -import org.apache.maven.enforcer.rules.utils.DependencyVersionMap; -import org.apache.maven.plugin.logging.Log; import org.eclipse.aether.collection.DependencyCollectionContext; import org.eclipse.aether.collection.DependencySelector; import org.eclipse.aether.graph.Dependency; @@ -40,8 +41,8 @@ import static org.apache.maven.artifact.Artifact.SCOPE_TEST; /** * @author <a href="mailto:r...@e-hoffman.org">Rex Hoffman</a> */ -public class DependencyConvergence implements EnforcerRule { - private static Log log; +@Named("dependencyConvergence") +public final class DependencyConvergence extends AbstractStandardEnforcerRule { private boolean uniqueVersions; @@ -51,51 +52,47 @@ public class DependencyConvergence implements EnforcerRule { private DependencyVersionMap dependencyVersionMap; - public void setUniqueVersions(boolean uniqueVersions) { - this.uniqueVersions = uniqueVersions; + private final ResolveUtil resolveUtil; + + @Inject + public DependencyConvergence(ResolveUtil resolveUtil) { + this.resolveUtil = Objects.requireNonNull(resolveUtil); } @Override - public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException { - if (log == null) { - log = helper.getLog(); + public void execute() throws EnforcerRuleException { + + DependencyNode node = resolveUtil.resolveTransitiveDependencies( + // TODO: use a modified version of ExclusionDependencySelector to process excludes and includes + new DependencySelector() { + @Override + public boolean selectDependency(Dependency dependency) { + // regular OptionalDependencySelector only discriminates optional dependencies at level 2+ + return !dependency.isOptional() + // regular scope selectors only discard transitive dependencies + // and always allow direct dependencies + && !dependency.getScope().equals(SCOPE_TEST) + && !dependency.getScope().equals(SCOPE_PROVIDED); + } + + @Override + public DependencySelector deriveChildSelector(DependencyCollectionContext context) { + return this; + } + }, + // process dependency exclusions + new ExclusionDependencySelector()); + dependencyVersionMap = new DependencyVersionMap().setUniqueVersions(uniqueVersions); + node.accept(dependencyVersionMap); + + List<CharSequence> errorMsgs = new ArrayList<>( + getConvergenceErrorMsgs(dependencyVersionMap.getConflictedVersionNumbers(includes, excludes))); + for (CharSequence errorMsg : errorMsgs) { + getLog().warnOrError(errorMsg); } - try { - DependencyNode node = ArtifactUtils.resolveTransitiveDependencies( - helper, - // TODO: use a modified version of ExclusionDependencySelector to process excludes and includes - new DependencySelector() { - @Override - public boolean selectDependency(Dependency dependency) { - // regular OptionalDependencySelector only discriminates optional dependencies at level 2+ - return !dependency.isOptional() - // regular scope selectors only discard transitive dependencies - // and always allow direct dependencies - && !dependency.getScope().equals(SCOPE_TEST) - && !dependency.getScope().equals(SCOPE_PROVIDED); - } - - @Override - public DependencySelector deriveChildSelector(DependencyCollectionContext context) { - return this; - } - }, - // process dependency exclusions - new ExclusionDependencySelector()); - dependencyVersionMap = new DependencyVersionMap(log).setUniqueVersions(uniqueVersions); - node.accept(dependencyVersionMap); - - List<CharSequence> errorMsgs = new ArrayList<>( - getConvergenceErrorMsgs(dependencyVersionMap.getConflictedVersionNumbers(includes, excludes))); - for (CharSequence errorMsg : errorMsgs) { - log.warn(errorMsg); - } - if (errorMsgs.size() > 0) { - throw new EnforcerRuleException( - "Failed while enforcing releasability. " + "See above detailed error message."); - } - } catch (Exception e) { - throw new EnforcerRuleException(e.getLocalizedMessage(), e); + if (errorMsgs.size() > 0) { + throw new EnforcerRuleException( + "Failed while enforcing releasability. " + "See above detailed error message."); } } @@ -143,17 +140,9 @@ public class DependencyConvergence implements EnforcerRule { } @Override - public String getCacheId() { - return ""; - } - - @Override - public boolean isCacheable() { - return false; - } - - @Override - public boolean isResultValid(EnforcerRule ignored) { - return false; + public String toString() { + return String.format( + "DependencyConvergence[includes=%s, excludes=%s, uniqueVersions=%b]", + includes, excludes, uniqueVersions); } } diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/DependencyVersionMap.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/DependencyVersionMap.java similarity index 94% rename from enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/DependencyVersionMap.java rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/DependencyVersionMap.java index 01567fc..29fcbbc 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/DependencyVersionMap.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/DependencyVersionMap.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.maven.enforcer.rules.utils; +package org.apache.maven.enforcer.rules.dependency; import java.util.ArrayList; import java.util.HashMap; @@ -24,7 +24,9 @@ import java.util.List; import java.util.Map; import org.apache.commons.lang3.StringUtils; -import org.apache.maven.plugin.logging.Log; +import org.apache.maven.enforcer.rules.utils.ArtifactUtils; +import org.apache.maven.enforcer.rules.utils.ParentNodeProvider; +import org.apache.maven.enforcer.rules.utils.ParentsVisitor; import org.eclipse.aether.artifact.Artifact; import org.eclipse.aether.graph.DependencyNode; import org.eclipse.aether.graph.DependencyVisitor; @@ -32,12 +34,12 @@ import org.eclipse.aether.graph.DependencyVisitor; /** * @author Brian Fox */ -public class DependencyVersionMap implements DependencyVisitor, ParentNodeProvider { +class DependencyVersionMap implements DependencyVisitor, ParentNodeProvider { private ParentsVisitor parentsVisitor; private boolean uniqueVersions; private final Map<String, List<DependencyNode>> idsToNode = new HashMap<>(); - public DependencyVersionMap(Log log) { + DependencyVersionMap() { this.parentsVisitor = new ParentsVisitor(); } diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDeps.java similarity index 62% rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDeps.java index 3875a7d..246ae7c 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDeps.java @@ -16,17 +16,18 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.maven.plugins.enforcer; +package org.apache.maven.enforcer.rules.dependency; + +import javax.inject.Inject; +import javax.inject.Named; import java.util.HashSet; import java.util.Set; import org.apache.maven.artifact.Artifact; import org.apache.maven.enforcer.rule.api.EnforcerRuleException; -import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; import org.apache.maven.enforcer.rules.utils.ArtifactUtils; -import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException; +import org.apache.maven.execution.MavenSession; import static java.util.Optional.ofNullable; import static org.apache.maven.enforcer.rules.utils.ArtifactUtils.matchDependencyArtifact; @@ -36,48 +37,40 @@ import static org.apache.maven.enforcer.rules.utils.ArtifactUtils.matchDependenc * * @author <a href="mailto:bri...@apache.org">Brian Fox</a> */ -public class RequireReleaseDeps extends BannedDependenciesBase { +@Named("requireReleaseDeps") +public final class RequireReleaseDeps extends BannedDependenciesBase { /** * Allows this rule to execute only when this project is a release. - * - * @see {@link #setOnlyWhenRelease(boolean)} - * @see {@link #isOnlyWhenRelease()} - * */ private boolean onlyWhenRelease = false; /** * Allows this rule to fail when the parent is defined as a snapshot. - * - * @see {@link #setFailWhenParentIsSnapshot(boolean)} - * @see {@link #isFailWhenParentIsSnapshot()} */ private boolean failWhenParentIsSnapshot = true; + @Inject + public RequireReleaseDeps(MavenSession session, ResolveUtil resolveUtil) { + super(session, resolveUtil); + } + // Override parent to allow optional ignore of this rule. @Override - public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException { + public void execute() throws EnforcerRuleException { boolean callSuper; - MavenProject project = null; if (onlyWhenRelease) { - // get the project - project = getProject(helper); - // only call super if this project is a release - callSuper = !project.getArtifact().isSnapshot(); + callSuper = !getSession().getCurrentProject().getArtifact().isSnapshot(); } else { callSuper = true; } if (callSuper) { - super.execute(helper); + super.execute(); if (failWhenParentIsSnapshot) { - if (project == null) { - project = getProject(helper); - } - Artifact parentArtifact = project.getParentArtifact(); + Artifact parentArtifact = getSession().getCurrentProject().getParentArtifact(); if (parentArtifact != null) { Set<Artifact> singletonArtifact = new HashSet<>(); @@ -100,60 +93,51 @@ public class RequireReleaseDeps extends BannedDependenciesBase { return "is not a release dependency"; } - /** - * @param helper - * @return The evaluated {@link MavenProject}. - * @throws EnforcerRuleException - */ - private MavenProject getProject(EnforcerRuleHelper helper) throws EnforcerRuleException { - try { - return (MavenProject) helper.evaluate("${project}"); - } catch (ExpressionEvaluationException eee) { - throw new EnforcerRuleException("Unable to retrieve the MavenProject: ", eee); - } - } - @Override protected boolean validate(Artifact artifact) { // only check isSnapshot() if the artifact does not match (excludes minus includes) // otherwise true - return (matchDependencyArtifact(artifact, excludes) && !matchDependencyArtifact(artifact, includes)) + return (matchDependencyArtifact(artifact, getExcludes()) && !matchDependencyArtifact(artifact, getIncludes())) || !artifact.isSnapshot(); } - /* + /** * Filter the dependency artifacts according to the includes and excludes * If includes and excludes are both null, the original set is returned. * * @param dependencies the list of dependencies to filter * @return the resulting set of dependencies */ - protected Set<Artifact> filterArtifacts(Set<Artifact> dependencies) throws EnforcerRuleException { - if (includes != null) { - dependencies = ArtifactUtils.filterDependencyArtifacts(dependencies, includes); + private Set<Artifact> filterArtifacts(Set<Artifact> dependencies) throws EnforcerRuleException { + if (getIncludes() != null) { + dependencies = ArtifactUtils.filterDependencyArtifacts(dependencies, getIncludes()); } - if (dependencies != null && excludes != null) { - ofNullable(ArtifactUtils.filterDependencyArtifacts(dependencies, excludes)) + if (dependencies != null && getExcludes() != null) { + ofNullable(ArtifactUtils.filterDependencyArtifacts(dependencies, getExcludes())) .ifPresent(dependencies::removeAll); } return dependencies; } - public final boolean isOnlyWhenRelease() { - return onlyWhenRelease; - } - - public final void setOnlyWhenRelease(boolean onlyWhenRelease) { + public void setOnlyWhenRelease(boolean onlyWhenRelease) { this.onlyWhenRelease = onlyWhenRelease; } - public final boolean isFailWhenParentIsSnapshot() { - return failWhenParentIsSnapshot; + public void setFailWhenParentIsSnapshot(boolean failWhenParentIsSnapshot) { + this.failWhenParentIsSnapshot = failWhenParentIsSnapshot; } - public final void setFailWhenParentIsSnapshot(boolean failWhenParentIsSnapshot) { - this.failWhenParentIsSnapshot = failWhenParentIsSnapshot; + @Override + public String toString() { + return String.format( + "RequireReleaseDeps[message=%s, excludes=%s, includes=%s, searchTransitive=%b, onlyWhenRelease=%b, failWhenParentIsSnapshot=%b]", + getMessage(), + getExcludes(), + getIncludes(), + isSearchTransitive(), + onlyWhenRelease, + failWhenParentIsSnapshot); } } diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDeps.java similarity index 94% rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDeps.java index acbcec6..c5c7a38 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDeps.java @@ -16,24 +16,27 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.maven.plugins.enforcer; +package org.apache.maven.enforcer.rules.dependency; + +import javax.inject.Inject; +import javax.inject.Named; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.versioning.ArtifactVersion; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.artifact.versioning.OverConstrainedVersionException; import org.apache.maven.enforcer.rule.api.EnforcerRuleException; -import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; +import org.apache.maven.enforcer.rules.AbstractStandardEnforcerRule; import org.apache.maven.enforcer.rules.utils.ArtifactUtils; import org.apache.maven.enforcer.rules.utils.ParentNodeProvider; import org.apache.maven.enforcer.rules.utils.ParentsVisitor; -import org.apache.maven.plugin.logging.Log; import org.apache.maven.shared.utils.logging.MessageUtils; import org.eclipse.aether.graph.DependencyNode; import org.eclipse.aether.graph.DependencyVisitor; @@ -45,8 +48,8 @@ import org.eclipse.aether.util.graph.manager.DependencyManagerUtils; * @author Geoffrey De Smet * @since 1.1 */ -public class RequireUpperBoundDeps extends AbstractNonCacheableEnforcerRule { - private static Log log; +@Named("requireUpperBoundDeps") +public final class RequireUpperBoundDeps extends AbstractStandardEnforcerRule { /** * @since 1.3 @@ -69,6 +72,13 @@ public class RequireUpperBoundDeps extends AbstractNonCacheableEnforcerRule { private RequireUpperBoundDepsVisitor upperBoundDepsVisitor; + private final ResolveUtil resolveUtil; + + @Inject + public RequireUpperBoundDeps(ResolveUtil resolveUtil) { + this.resolveUtil = Objects.requireNonNull(resolveUtil); + } + /** * Set to {@code true} if timestamped snapshots should be used. * @@ -97,11 +107,8 @@ public class RequireUpperBoundDeps extends AbstractNonCacheableEnforcerRule { } @Override - public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException { - if (log == null) { - log = helper.getLog(); - } - DependencyNode node = ArtifactUtils.resolveTransitiveDependencies(helper); + public void execute() throws EnforcerRuleException { + DependencyNode node = resolveUtil.resolveTransitiveDependencies(); upperBoundDepsVisitor = new RequireUpperBoundDepsVisitor() .setUniqueVersions(uniqueVersions) .setIncludes(includes); @@ -119,7 +126,7 @@ public class RequireUpperBoundDeps extends AbstractNonCacheableEnforcerRule { org.eclipse.aether.artifact.Artifact artifact = conflict.get(0).getArtifact(); String groupArt = artifact.getGroupId() + ":" + artifact.getArtifactId(); if (excludes != null && excludes.contains(groupArt)) { - log.info("Ignoring requireUpperBoundDeps in " + groupArt); + getLog().info("Ignoring requireUpperBoundDeps in " + groupArt); } else { errorMessages.add(buildErrorMessage(conflict)); } diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/ResolveUtil.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/ResolveUtil.java new file mode 100644 index 0000000..8eb8278 --- /dev/null +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/ResolveUtil.java @@ -0,0 +1,107 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.maven.enforcer.rules.dependency; + +import javax.inject.Inject; +import javax.inject.Named; + +import java.util.Objects; +import java.util.stream.Collectors; + +import org.apache.maven.RepositoryUtils; +import org.apache.maven.artifact.Artifact; +import org.apache.maven.enforcer.rule.api.EnforcerRuleException; +import org.apache.maven.execution.MavenSession; +import org.apache.maven.model.DependencyManagement; +import org.apache.maven.project.MavenProject; +import org.eclipse.aether.DefaultRepositorySystemSession; +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.artifact.ArtifactTypeRegistry; +import org.eclipse.aether.collection.CollectRequest; +import org.eclipse.aether.collection.DependencyCollectionException; +import org.eclipse.aether.collection.DependencySelector; +import org.eclipse.aether.graph.DependencyNode; +import org.eclipse.aether.util.graph.manager.DependencyManagerUtils; +import org.eclipse.aether.util.graph.selector.AndDependencySelector; +import org.eclipse.aether.util.graph.transformer.ConflictResolver; + +import static java.util.Optional.ofNullable; + +/** + * Resolver helper class. + */ +@Named +class ResolveUtil { + + private final RepositorySystem repositorySystem; + private final MavenSession session; + + /** + * Default constructor + */ + @Inject + ResolveUtil(RepositorySystem repositorySystem, MavenSession session) { + this.repositorySystem = Objects.requireNonNull(repositorySystem); + this.session = Objects.requireNonNull(session); + } + + /** + * Retrieves the {@link DependencyNode} instance containing the result of the transitive dependency + * for the current {@link MavenProject}. + * + * @param selectors zero or more {@link DependencySelector} instances + * @return a Dependency Node which is the root of the project's dependency tree + * @throws EnforcerRuleException thrown if the lookup fails + */ + DependencyNode resolveTransitiveDependencies(DependencySelector... selectors) throws EnforcerRuleException { + try { + MavenProject project = session.getCurrentProject(); + ArtifactTypeRegistry artifactTypeRegistry = + session.getRepositorySession().getArtifactTypeRegistry(); + + DefaultRepositorySystemSession repositorySystemSession = + new DefaultRepositorySystemSession(session.getRepositorySession()); + repositorySystemSession.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, true); + repositorySystemSession.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, true); + if (selectors.length > 0) { + repositorySystemSession.setDependencySelector(new AndDependencySelector(selectors)); + } + + CollectRequest collectRequest = new CollectRequest( + project.getDependencies().stream() + .map(d -> RepositoryUtils.toDependency(d, artifactTypeRegistry)) + .collect(Collectors.toList()), + ofNullable(project.getDependencyManagement()) + .map(DependencyManagement::getDependencies) + .map(list -> list.stream() + .map(d -> RepositoryUtils.toDependency(d, artifactTypeRegistry)) + .collect(Collectors.toList())) + .orElse(null), + project.getRemoteProjectRepositories()); + Artifact artifact = project.getArtifact(); + collectRequest.setRootArtifact(RepositoryUtils.toArtifact(artifact)); + + return repositorySystem + .collectDependencies(repositorySystemSession, collectRequest) + .getRoot(); + } catch (DependencyCollectionException e) { + throw new EnforcerRuleException("Could not build dependency tree " + e.getLocalizedMessage(), e); + } + } +} diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactMatcher.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactMatcher.java index 83fb00c..0f2d774 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactMatcher.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactMatcher.java @@ -37,7 +37,6 @@ import static java.util.Optional.ofNullable; * This class is used for matching Artifacts against a list of patterns. * * @author Jakub Senko - * @see org.apache.maven.plugins.enforcer.BanTransitiveDependencies */ public final class ArtifactMatcher { diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactUtils.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactUtils.java index 68164d3..4f8138c 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactUtils.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactUtils.java @@ -19,7 +19,6 @@ package org.apache.maven.enforcer.rules.utils; import java.util.Collection; -import java.util.HashSet; import java.util.Set; import java.util.stream.Collectors; @@ -28,22 +27,7 @@ import org.apache.maven.RepositoryUtils; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.enforcer.rule.api.EnforcerRuleException; -import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; -import org.apache.maven.execution.MavenSession; -import org.apache.maven.model.DependencyManagement; -import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException; -import org.codehaus.plexus.component.repository.exception.ComponentLookupException; -import org.eclipse.aether.DefaultRepositorySystemSession; -import org.eclipse.aether.RepositorySystem; -import org.eclipse.aether.artifact.ArtifactTypeRegistry; -import org.eclipse.aether.collection.CollectRequest; -import org.eclipse.aether.collection.DependencyCollectionException; -import org.eclipse.aether.collection.DependencySelector; import org.eclipse.aether.graph.DependencyNode; -import org.eclipse.aether.util.graph.manager.DependencyManagerUtils; -import org.eclipse.aether.util.graph.selector.AndDependencySelector; -import org.eclipse.aether.util.graph.transformer.ConflictResolver; import static java.util.Optional.ofNullable; @@ -72,75 +56,6 @@ public final class ArtifactUtils { return artifact; } - /** - * Retrieves the {@link DependencyNode} instance containing the result of the transitive dependency - * for the current {@link MavenProject}. - * - * @param helper (may not be null) an instance of the {@link EnforcerRuleHelper} class - * @param selectors zero or more {@link DependencySelector} instances - * @return a Dependency Node which is the root of the project's dependency tree - * @throws EnforcerRuleException thrown if the lookup fails - */ - public static DependencyNode resolveTransitiveDependencies( - EnforcerRuleHelper helper, DependencySelector... selectors) throws EnforcerRuleException { - try { - RepositorySystem repositorySystem = helper.getComponent(RepositorySystem.class); - MavenSession session = (MavenSession) helper.evaluate("${session}"); - MavenProject project = session.getCurrentProject(); - ArtifactTypeRegistry artifactTypeRegistry = - session.getRepositorySession().getArtifactTypeRegistry(); - - DefaultRepositorySystemSession repositorySystemSession = - new DefaultRepositorySystemSession(session.getRepositorySession()); - repositorySystemSession.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, true); - repositorySystemSession.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, true); - if (selectors.length > 0) { - repositorySystemSession.setDependencySelector(new AndDependencySelector(selectors)); - } - - CollectRequest collectRequest = new CollectRequest( - project.getDependencies().stream() - .map(d -> RepositoryUtils.toDependency(d, artifactTypeRegistry)) - .collect(Collectors.toList()), - ofNullable(project.getDependencyManagement()) - .map(DependencyManagement::getDependencies) - .map(list -> list.stream() - .map(d -> RepositoryUtils.toDependency(d, artifactTypeRegistry)) - .collect(Collectors.toList())) - .orElse(null), - project.getRemoteProjectRepositories()); - Artifact artifact = project.getArtifact(); - collectRequest.setRootArtifact(RepositoryUtils.toArtifact(artifact)); - - return repositorySystem - .collectDependencies(repositorySystemSession, collectRequest) - .getRoot(); - } catch (ExpressionEvaluationException | ComponentLookupException e) { - throw new EnforcerRuleException("Unable to lookup a component " + e.getLocalizedMessage(), e); - } catch (DependencyCollectionException e) { - throw new EnforcerRuleException("Could not build dependency tree " + e.getLocalizedMessage(), e); - } - } - - /** - * <p>Retrieves all <em>child</em> dependency artifacts from the given {@link DependencyNode} and returns them - * as a set of {@link Artifact}.</p> - * <p><u>Note:</u> Thus, the result will not contain the root artifact.</p> - * @param node root node - * @return set of all <em>child</em> dependency artifacts - */ - public static Set<Artifact> getDependencyArtifacts(DependencyNode node) { - return getDependencyArtifacts(node, new HashSet<>()); - } - - private static Set<Artifact> getDependencyArtifacts(DependencyNode node, Set<Artifact> set) { - node.getChildren().forEach(child -> { - set.add(toArtifact(child)); - getDependencyArtifacts(child, set); - }); - return set; - } - /** * Returns a subset of dependency artifacts that match the given collection of patterns * @@ -201,7 +116,7 @@ public final class ArtifactUtils { * @param artifact the artifact * @return <code>true</code> if the artifact matches one of the patterns */ - static boolean compareDependency(String pattern, Artifact artifact) { + public static boolean compareDependency(String pattern, Artifact artifact) { return new ArtifactMatcher.Pattern(pattern).match(artifact); } } diff --git a/enforcer-rules/src/site/apt/banTransitiveDependencies.apt.vm b/enforcer-rules/src/site/apt/banTransitiveDependencies.apt.vm index 95265ca..d388183 100644 --- a/enforcer-rules/src/site/apt/banTransitiveDependencies.apt.vm +++ b/enforcer-rules/src/site/apt/banTransitiveDependencies.apt.vm @@ -29,17 +29,17 @@ Ban Transitive Dependencies The following parameters are supported by this rule: - * excludes - specify the dependencies that will be ignored.\ + * <<excludes>> - specify the dependencies that will be ignored.\ This can be a list of artifacts in the format groupId[:artifactId[:version[:type[:scope[:classifier]]]]] . Wildcard '*' can be used to in place of specific section (e.g. group:*:1.0 will match both 'group:artifact:1.0' and 'group:anotherArtifact:1.0') Version is a string representing standard maven version range. Empty patterns will be ignored. - * includes - specify the dependencies that will be checked.\ + * <<includes>> - specify the dependencies that will be checked.\ These are exceptions to excludes intended for more convenient configuration. This can be a list of artifacts in the format groupId[:artifactId[:version[:type[:scope[:classifier]]]]] as above. - * message - an optional message to the user if the rule fails. Will replace generated report message. + * <<message>> - an optional message to the user if the rule fails. Will replace generated report message. [] diff --git a/enforcer-rules/src/site/apt/bannedDependencies.apt.vm b/enforcer-rules/src/site/apt/bannedDependencies.apt.vm index c732569..5018647 100644 --- a/enforcer-rules/src/site/apt/bannedDependencies.apt.vm +++ b/enforcer-rules/src/site/apt/bannedDependencies.apt.vm @@ -30,9 +30,9 @@ Banned Dependencies The following parameters are supported by this rule: - * searchTransitive - if transitive dependencies should be checked. Default is true. + * <<searchTransitive>> - if transitive dependencies should be checked. Default is true. - * excludes - a list of artifacts to ban. The format is groupId[:artifactId][:version][:type][:scope][:classifier] where artifactId, version, type, scope and classifier are optional. Wildcards may be used to replace an entire or just parts of a section. + * <<excludes>> - a list of artifacts to ban. The format is groupId[:artifactId][:version][:type][:scope][:classifier] where artifactId, version, type, scope and classifier are optional. Wildcards may be used to replace an entire or just parts of a section. Examples: * org.apache.maven @@ -53,11 +53,11 @@ Banned Dependencies [] - * includes - a list of artifacts to include. These are exceptions to the excludes. It is meant to allow wide exclusion rules with wildcards and fine tune using includes. If nothing has been excluded, then the includes have no effect. In otherwords, includes only subtract from artifacts that matched an exclude rule. + * <<includes>> - a list of artifacts to include. These are exceptions to the excludes. It is meant to allow wide exclusion rules with wildcards and fine tune using includes. If nothing has been excluded, then the includes have no effect. In otherwords, includes only subtract from artifacts that matched an exclude rule. For example, to ban all xerces except xerces-api you would exclude "xerces" (groupId) and include "xerces:xerces-api" - * message - an optional message to the user if the rule fails. + * <<message>> - an optional message to the user if the rule fails. [] diff --git a/enforcer-rules/src/site/apt/dependencyConvergence.apt.vm b/enforcer-rules/src/site/apt/dependencyConvergence.apt.vm index 4f848f8..ca9d044 100644 --- a/enforcer-rules/src/site/apt/dependencyConvergence.apt.vm +++ b/enforcer-rules/src/site/apt/dependencyConvergence.apt.vm @@ -133,10 +133,10 @@ and By default, all dependency convergence errors are reported, and any single error will fail the build. If you want to tune which dependency errors are reported and fail the build, you can add the following optional parameters: - * includes - A list of artifacts for which dependency convergence should be enforced. Not specifying any includes + * <<includes>> - A list of artifacts for which dependency convergence should be enforced. Not specifying any includes is interpreted the same as including all artifacts. - * excludes - A list of artifacts for which dependency convergence should not be enforced. These are exceptions + * <<excludes>> - A list of artifacts for which dependency convergence should not be enforced. These are exceptions to the includes. [] diff --git a/enforcer-rules/src/site/apt/noSnapshots.apt.vm b/enforcer-rules/src/site/apt/noSnapshots.apt.vm deleted file mode 100644 index 8465b56..0000000 --- a/enforcer-rules/src/site/apt/noSnapshots.apt.vm +++ /dev/null @@ -1,72 +0,0 @@ -~~ Licensed to the Apache Software Foundation (ASF) under one -~~ or more contributor license agreements. See the NOTICE file -~~ distributed with this work for additional information -~~ regarding copyright ownership. The ASF licenses this file -~~ to you under the Apache License, Version 2.0 (the -~~ "License"); you may not use this file except in compliance -~~ with the License. You may obtain a copy of the License at -~~ -~~ http://www.apache.org/licenses/LICENSE-2.0 -~~ -~~ Unless required by applicable law or agreed to in writing, -~~ software distributed under the License is distributed on an -~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -~~ KIND, either express or implied. See the License for the -~~ specific language governing permissions and limitations -~~ under the License. - - ------ - Require Release Dependencies - ------ - Brian Fox - ------ - November 2007 - ------ - -Require Release Dependencies - - This rule checks the dependencies and fails if any snapshots are found. - - - The following parameters are supported by this rule: - - * searchTransitive - if transitive dependencies should be checked. - - * message - an optional message to the user if the rule fails. - - [] - - - Sample Plugin Configuration: - -+---+ -<project> - [...] - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-enforcer-plugin</artifactId> - <version>${project.version}</version> - <executions> - <execution> - <id>enforce-no-snapshots</id> - <goals> - <goal>enforce</goal> - </goals> - <configuration> - <rules> - <requireReleaseDeps> - <message>No Snapshots Allowed!</message> - </requireReleaseDeps> - </rules> - <fail>true</fail> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - [...] -</project> -+---+ \ No newline at end of file diff --git a/enforcer-rules/src/site/apt/requireReleaseDeps.apt.vm b/enforcer-rules/src/site/apt/requireReleaseDeps.apt.vm index 65566c2..9311a00 100644 --- a/enforcer-rules/src/site/apt/requireReleaseDeps.apt.vm +++ b/enforcer-rules/src/site/apt/requireReleaseDeps.apt.vm @@ -30,17 +30,17 @@ Require Release Dependencies The following parameters are supported by this rule: - * searchTransitive - if transitive dependencies should be checked. Default: true + * <<searchTransitive>> - if transitive dependencies should be checked. Default: true - * message - an optional message to the user if the rule fails. + * <<message>> - an optional message to the user if the rule fails. - * onlyWhenRelease - if this rule should only be executed when the version is a non-SNAPSHOT version. Default: false + * <<onlyWhenRelease>> - if this rule should only be executed when the version is a non-SNAPSHOT version. Default: false - * failWhenParentIsSnapshot - if the parent should be checked. Default: true + * <<failWhenParentIsSnapshot>> - if the parent should be checked. Default: true - * includes - List of dependency patterns to include when checking for snapshot versions. + * <<includes>> - List of dependency patterns to include when checking for snapshot versions. - * excludes - List of dependency patterns to exclude when checking for snapshot versions + * <<excludes>> - List of dependency patterns to exclude when checking for snapshot versions [] diff --git a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesTest.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesTest.java new file mode 100644 index 0000000..69ad445 --- /dev/null +++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesTest.java @@ -0,0 +1,182 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.maven.enforcer.rules.dependency; + +import java.util.Collections; + +import org.apache.maven.enforcer.rule.api.EnforcerRuleException; +import org.apache.maven.enforcer.rules.utils.DependencyNodeBuilder; +import org.apache.maven.execution.MavenSession; +import org.apache.maven.plugin.testing.ArtifactStubFactory; +import org.apache.maven.project.MavenProject; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.mockito.Mockito.when; + +/** + * The Class BannedDependenciesTest. + * + * @author <a href="mailto:bri...@apache.org">Brian Fox</a> + */ +@ExtendWith(MockitoExtension.class) +class BannedDependenciesTest { + + private static final ArtifactStubFactory ARTIFACT_STUB_FACTORY = new ArtifactStubFactory(); + + @Mock + private MavenProject project; + + @Mock + private MavenSession session; + + @Mock + private ResolveUtil resolveUtil; + + @InjectMocks + private BannedDependencies rule; + + @Test + void excludesDoNotUseTransitiveDependencies() throws Exception { + when(session.getCurrentProject()).thenReturn(project); + when(project.getDependencyArtifacts()).thenReturn(ARTIFACT_STUB_FACTORY.getScopedArtifacts()); + + rule.setSearchTransitive(false); + rule.setExcludes(Collections.singletonList("*")); + + assertThatCode(rule::execute) + .isInstanceOf(EnforcerRuleException.class) + .hasMessageContaining("g:runtime:jar:1.0 <--- banned via the exclude/include list") + .hasMessageContaining("g:compile:jar:1.0 <--- banned via the exclude/include list") + .hasMessageContaining("g:provided:jar:1.0 <--- banned via the exclude/include list") + .hasMessageContaining("g:test:jar:1.0 <--- banned via the exclude/include list") + .hasMessageContaining("g:system:jar:1.0 <--- banned via the exclude/include list"); + } + + @Test + void excludesAndIncludesDoNotUseTransitiveDependencies() throws Exception { + when(session.getCurrentProject()).thenReturn(project); + when(project.getDependencyArtifacts()).thenReturn(ARTIFACT_STUB_FACTORY.getScopedArtifacts()); + + rule.setSearchTransitive(false); + rule.setExcludes(Collections.singletonList("*")); + rule.setIncludes(Collections.singletonList("g:compile")); + + assertThatCode(rule::execute) + .isInstanceOf(EnforcerRuleException.class) + .hasMessageContaining("g:runtime:jar:1.0 <--- banned via the exclude/include list") + .hasMessageContaining("g:provided:jar:1.0 <--- banned via the exclude/include list") + .hasMessageContaining("g:test:jar:1.0 <--- banned via the exclude/include list") + .hasMessageContaining("g:system:jar:1.0 <--- banned via the exclude/include list") + .hasMessageNotContaining("g:compile:jar:1.0"); + } + + @Test + void excludesUseTransitiveDependencies() throws Exception { + + when(resolveUtil.resolveTransitiveDependencies()) + .thenReturn(new DependencyNodeBuilder() + .withType(DependencyNodeBuilder.Type.POM) + .withChildNode(new DependencyNodeBuilder() + .withArtifactId("childA") + .withVersion("1.0.0") + .withChildNode(new DependencyNodeBuilder() + .withType(DependencyNodeBuilder.Type.WAR) + .withArtifactId("childAA") + .withVersion("1.0.0-SNAPSHOT") + .build()) + .withChildNode(new DependencyNodeBuilder() + .withType(DependencyNodeBuilder.Type.WAR) + .withArtifactId("childAB") + .withVersion("1.0.0-SNAPSHOT") + .build()) + .build()) + .build()); + + rule.setSearchTransitive(true); + rule.setExcludes(Collections.singletonList("*:*:*:war")); + + assertThatCode(rule::execute) + .isInstanceOf(EnforcerRuleException.class) + .hasMessageContaining( + "default-group:childAA:war:classifier:1.0.0-SNAPSHOT <--- banned via the exclude/include list") + .hasMessageContaining( + "default-group:childAB:war:classifier:1.0.0-SNAPSHOT <--- banned via the exclude/include list"); + } + + @Test + void excludesAndIncludesUseTransitiveDependencies() throws Exception { + + when(resolveUtil.resolveTransitiveDependencies()) + .thenReturn(new DependencyNodeBuilder() + .withType(DependencyNodeBuilder.Type.POM) + .withChildNode(new DependencyNodeBuilder() + .withArtifactId("childA") + .withVersion("1.0.0") + .withChildNode(new DependencyNodeBuilder() + .withType(DependencyNodeBuilder.Type.WAR) + .withArtifactId("childAA") + .withVersion("1.0.0-SNAPSHOT") + .build()) + .withChildNode(new DependencyNodeBuilder() + .withType(DependencyNodeBuilder.Type.WAR) + .withArtifactId("childAB") + .withVersion("1.0.0-SNAPSHOT") + .build()) + .build()) + .build()); + + rule.setSearchTransitive(true); + rule.setExcludes(Collections.singletonList("*:*:*:war")); + rule.setIncludes(Collections.singletonList("*:childAB:*:war")); + + assertThatCode(rule::execute) + .isInstanceOf(EnforcerRuleException.class) + .hasMessageContaining( + "default-group:childAA:war:classifier:1.0.0-SNAPSHOT <--- banned via the exclude/include list") + .hasMessageNotContaining("childAB"); + } + + @Test + void invalidExcludeFormat() throws Exception { + when(session.getCurrentProject()).thenReturn(project); + when(project.getDependencyArtifacts()).thenReturn(ARTIFACT_STUB_FACTORY.getScopedArtifacts()); + + rule.setSearchTransitive(false); + rule.setExcludes(Collections.singletonList("::::::::::")); + + assertThatCode(rule::execute).isInstanceOf(IllegalArgumentException.class); + } + + @Test + void invalidIncludeFormat() throws Exception { + when(session.getCurrentProject()).thenReturn(project); + when(project.getDependencyArtifacts()).thenReturn(ARTIFACT_STUB_FACTORY.getScopedArtifacts()); + + rule.setSearchTransitive(false); + rule.setExcludes(Collections.singletonList("*")); + rule.setIncludes(Collections.singletonList("*:*:x:x:x:x:x:x:x:x:")); + + assertThatCode(rule::execute).isInstanceOf(IllegalArgumentException.class); + } +} diff --git a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDepsTest.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDepsTest.java new file mode 100644 index 0000000..0f5f1df --- /dev/null +++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDepsTest.java @@ -0,0 +1,184 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.maven.enforcer.rules.dependency; + +import java.io.IOException; +import java.util.Collections; + +import org.apache.maven.enforcer.rule.api.EnforcerRuleException; +import org.apache.maven.enforcer.rules.utils.DependencyNodeBuilder; +import org.apache.maven.execution.MavenSession; +import org.apache.maven.plugin.testing.ArtifactStubFactory; +import org.apache.maven.project.MavenProject; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.apache.maven.plugins.enforcer.EnforcerTestUtils.getDependencyNodeWithMultipleSnapshots; +import static org.apache.maven.plugins.enforcer.EnforcerTestUtils.getDependencyNodeWithMultipleTestSnapshots; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.mockito.Mockito.verifyNoInteractions; +import static org.mockito.Mockito.when; + +/** + * Unit tests for {@link RequireReleaseDeps} + * + * @author <a href="mailto:bri...@apache.org">Brian Fox</a>, Andrzej Jarmoniuk + */ +@ExtendWith(MockitoExtension.class) +class RequireReleaseDepsTest { + private static final ArtifactStubFactory ARTIFACT_STUB_FACTORY = new ArtifactStubFactory(); + + @Mock + private MavenProject project; + + @Mock + private MavenSession session; + + @Mock + private ResolveUtil resolveUtil; + + @InjectMocks + private RequireReleaseDeps rule; + + @BeforeEach + void setUp() { + // ruleHelper = EnforcerTestUtils.getHelper(project); + // rule = new RequireReleaseDeps(); + } + + @Test + void testSearchNonTransitive() throws IOException { + when(session.getCurrentProject()).thenReturn(project); + when(project.getDependencyArtifacts()).thenReturn(ARTIFACT_STUB_FACTORY.getScopedArtifacts()); + rule.setSearchTransitive(false); + + assertThatCode(rule::execute).doesNotThrowAnyException(); + + verifyNoInteractions(resolveUtil); + } + + @Test + void testSearchTransitiveMultipleFailures() throws Exception { + when(resolveUtil.resolveTransitiveDependencies()).thenReturn(getDependencyNodeWithMultipleSnapshots()); + rule.setSearchTransitive(true); + + assertThatCode(rule::execute) + .isInstanceOf(EnforcerRuleException.class) + .hasMessageContaining( + "default-group:childAA:jar:classifier:1.0.0-SNAPSHOT <--- is not a release dependency") + .hasMessageContaining( + "default-group:childB:jar:classifier:2.0.0-SNAPSHOT <--- is not a release dependency"); + } + + @Test + void testSearchTransitiveNoFailures() throws Exception { + when(session.getCurrentProject()).thenReturn(project); + when(resolveUtil.resolveTransitiveDependencies()).thenReturn(new DependencyNodeBuilder().build()); + + rule.setSearchTransitive(true); + assertThatCode(rule::execute).doesNotThrowAnyException(); + } + + @Test + void testShouldFailOnlyWhenRelease() throws Exception { + when(session.getCurrentProject()).thenReturn(project); + when(project.getArtifact()).thenReturn(ARTIFACT_STUB_FACTORY.getSnapshotArtifact()); + rule.setOnlyWhenRelease(true); + + assertThatCode(rule::execute).doesNotThrowAnyException(); + + verifyNoInteractions(resolveUtil); + } + + @Test + void testWildcardExcludeTests() throws Exception { + when(session.getCurrentProject()).thenReturn(project); + when(resolveUtil.resolveTransitiveDependencies()).thenReturn(getDependencyNodeWithMultipleTestSnapshots()); + + rule.setExcludes(Collections.singletonList("*:*:*:*:test")); + rule.setSearchTransitive(true); + + assertThatCode(rule::execute).doesNotThrowAnyException(); + } + + @Test + void testWildcardExcludeAll() throws Exception { + when(session.getCurrentProject()).thenReturn(project); + when(resolveUtil.resolveTransitiveDependencies()).thenReturn(getDependencyNodeWithMultipleTestSnapshots()); + + rule.setExcludes(Collections.singletonList("*")); + rule.setSearchTransitive(true); + + assertThatCode(rule::execute).doesNotThrowAnyException(); + } + + @Test + void testExcludesAndIncludes() throws Exception { + when(resolveUtil.resolveTransitiveDependencies()).thenReturn(getDependencyNodeWithMultipleTestSnapshots()); + + rule.setExcludes(Collections.singletonList("*")); + rule.setIncludes(Collections.singletonList("*:*:*:*:test")); + rule.setSearchTransitive(true); + + assertThatCode(rule::execute) + .isInstanceOf(EnforcerRuleException.class) + .hasMessageContaining( + "default-group:childAA:jar:classifier:1.0.0-SNAPSHOT <--- is not a release dependency") + .hasMessageContaining( + "default-group:childB:jar:classifier:2.0.0-SNAPSHOT <--- is not a release dependency"); + } + + /** + * Test id. + */ + @Test + void testId() { + assertThat(rule.getCacheId()).isNull(); + } + + @Test + void testFailWhenParentIsSnapshot() throws Exception { + when(session.getCurrentProject()).thenReturn(project); + when(project.getParentArtifact()).thenReturn(ARTIFACT_STUB_FACTORY.getSnapshotArtifact()); + when(resolveUtil.resolveTransitiveDependencies()).thenReturn(new DependencyNodeBuilder().build()); + + rule.setFailWhenParentIsSnapshot(true); + + assertThatCode(rule::execute) + .isInstanceOf(EnforcerRuleException.class) + .hasMessageContaining("Parent Cannot be a snapshot: testGroupId:snapshot:jar:2.0-SNAPSHOT"); + } + + @Test + void parentShouldBeExcluded() throws Exception { + when(session.getCurrentProject()).thenReturn(project); + when(project.getParentArtifact()).thenReturn(ARTIFACT_STUB_FACTORY.getSnapshotArtifact()); + when(resolveUtil.resolveTransitiveDependencies()).thenReturn(new DependencyNodeBuilder().build()); + + rule.setFailWhenParentIsSnapshot(true); + rule.setExcludes(Collections.singletonList("testGroupId:*")); + + assertThatCode(rule::execute).doesNotThrowAnyException(); + } +} diff --git a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDepsTest.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDepsTest.java new file mode 100644 index 0000000..5cbbe30 --- /dev/null +++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDepsTest.java @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.maven.enforcer.rules.dependency; + +import org.apache.maven.enforcer.rule.api.EnforcerRuleException; +import org.apache.maven.enforcer.rules.utils.DependencyNodeBuilder; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class RequireUpperBoundDepsTest { + + @Mock + private ResolveUtil resolveUtil; + + @InjectMocks + private RequireUpperBoundDeps rule; + + @Test + void testRule() throws Exception { + + when(resolveUtil.resolveTransitiveDependencies()) + .thenReturn(new DependencyNodeBuilder() + .withType(DependencyNodeBuilder.Type.POM) + .withChildNode(new DependencyNodeBuilder() + .withArtifactId("childA") + .withVersion("1.0.0") + .build()) + .withChildNode(new DependencyNodeBuilder() + .withArtifactId("childA") + .withVersion("2.0.0") + .build()) + .build()); + + assertThatCode(rule::execute) + .isInstanceOf(EnforcerRuleException.class) + .hasMessageContaining("default-group:childA:1.0.0:classifier") + .hasMessageContaining("default-group:childA:2.0.0:classifier"); + } +} diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/BannedDependenciesTestSetup.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/BannedDependenciesTestSetup.java deleted file mode 100644 index 7f3e976..0000000 --- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/BannedDependenciesTestSetup.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.maven.plugins.enforcer; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import org.apache.maven.enforcer.rule.api.EnforcerRuleException; -import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; -import org.apache.maven.plugin.testing.ArtifactStubFactory; -import org.apache.maven.project.MavenProject; - -public class BannedDependenciesTestSetup { - private final MavenProject project; - - public BannedDependenciesTestSetup() throws IOException { - this.excludes = new ArrayList<>(); - this.includes = new ArrayList<>(); - - ArtifactStubFactory factory = new ArtifactStubFactory(); - - project = new MockProject(); - project.setDependencyArtifacts(factory.getScopedArtifacts()); - - this.helper = EnforcerTestUtils.getHelper(project); - - this.rule = new BannedDependencies(); - this.rule.setMessage(null); - - this.rule.setExcludes(this.excludes); - this.rule.setIncludes(this.includes); - } - - private List<String> excludes; - - private final List<String> includes; - - private final BannedDependencies rule; - - private final EnforcerRuleHelper helper; - - public void setSearchTransitive(boolean searchTransitive) { - rule.setSearchTransitive(searchTransitive); - } - - public void addExcludeAndRunRule(String toAdd) throws EnforcerRuleException { - excludes.add(toAdd); - rule.execute(helper); - } - - public void addIncludeExcludeAndRunRule(String incAdd, String excAdd) throws EnforcerRuleException { - excludes.add(excAdd); - includes.add(incAdd); - rule.execute(helper); - } - - public List<String> getExcludes() { - return excludes; - } - - public void setExcludes(List<String> excludes) { - this.excludes = excludes; - } -} diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDepsTest.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDepsTest.java deleted file mode 100644 index 59be79b..0000000 --- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDepsTest.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.maven.plugins.enforcer; - -import org.apache.maven.enforcer.rule.api.EnforcerRuleException; -import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; -import org.apache.maven.enforcer.rules.utils.DependencyNodeBuilder; -import org.junit.jupiter.api.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsString; -import static org.junit.jupiter.api.Assertions.fail; - -public class RequireUpperBoundDepsTest { - - @Test - public void testRule() { - MockProject project = new MockProject(); - EnforcerRuleHelper helper = EnforcerTestUtils.getHelper(project); - RequireUpperBoundDeps rule = new RequireUpperBoundDeps(); - EnforcerTestUtils.provideCollectDependencies(new DependencyNodeBuilder() - .withType(DependencyNodeBuilder.Type.POM) - .withChildNode(new DependencyNodeBuilder() - .withArtifactId("childA") - .withVersion("1.0.0") - .build()) - .withChildNode(new DependencyNodeBuilder() - .withArtifactId("childA") - .withVersion("2.0.0") - .build()) - .build()); - - try { - rule.execute(helper); - fail("Did not detect upper bounds error"); - } catch (EnforcerRuleException ex) { - assertThat(ex.getMessage(), containsString("default-group:childA:1.0.0:classifier")); - assertThat(ex.getMessage(), containsString("default-group:childA:2.0.0:classifier")); - } - } -} diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestBannedDependencies.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestBannedDependencies.java deleted file mode 100644 index 069fb32..0000000 --- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestBannedDependencies.java +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.maven.plugins.enforcer; - -import java.io.IOException; - -import org.apache.maven.enforcer.rule.api.EnforcerRuleException; -import org.apache.maven.enforcer.rules.utils.DependencyNodeBuilder; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.apache.maven.plugins.enforcer.EnforcerTestUtils.provideCollectDependencies; -import static org.junit.jupiter.api.Assertions.assertThrows; - -/** - * The Class TestBannedDependencies. - * - * @author <a href="mailto:bri...@apache.org">Brian Fox</a> - */ -public class TestBannedDependencies { - - public static class ExcludesDoNotUseTransitiveDependencies { - private BannedDependenciesTestSetup setup; - - @BeforeEach - public void beforeMethod() throws IOException { - this.setup = new BannedDependenciesTestSetup(); - this.setup.setSearchTransitive(false); - } - - private void addExcludeAndRunRule(String toAdd) throws EnforcerRuleException { - this.setup.addExcludeAndRunRule(toAdd); - } - - @Test - public void testGroupIdArtifactIdVersion() throws Exception { - addExcludeAndRunRule("testGroupId:release:1.0"); - } - - @Test - public void testGroupIdArtifactId() throws Exception { - addExcludeAndRunRule("testGroupId:release"); - } - - @Test - public void testGroupId() throws Exception { - addExcludeAndRunRule("testGroupId"); - } - } - - public static class ExcludesUsingTransitiveDependencies { - - private BannedDependenciesTestSetup setup; - - @BeforeEach - public void beforeMethod() throws IOException { - this.setup = new BannedDependenciesTestSetup(); - this.setup.setSearchTransitive(true); - } - - private void addExcludeAndRunRule(String toAdd) throws EnforcerRuleException { - this.setup.addExcludeAndRunRule(toAdd); - } - - @Test - public void testGroupIdArtifactIdVersion() { - assertThrows(EnforcerRuleException.class, () -> addExcludeAndRunRule("default-group:childA:1.0.0")); - } - - @Test - public void testGroupIdArtifactId() { - assertThrows(EnforcerRuleException.class, () -> addExcludeAndRunRule("default-group:childA")); - } - - @Test - public void testGroupId() { - assertThrows(EnforcerRuleException.class, () -> addExcludeAndRunRule("default-group")); - } - - @Test - public void testSpaceTrimmingGroupIdArtifactIdVersion() { - assertThrows( - EnforcerRuleException.class, - () -> addExcludeAndRunRule(" default-group : childA : 1.0.0 ")); - } - - @Test - public void groupIdArtifactIdVersionType() { - provideCollectDependencies(new DependencyNodeBuilder() - .withType(DependencyNodeBuilder.Type.POM) - .withChildNode(new DependencyNodeBuilder() - .withArtifactId("childA") - .withVersion("1.0.0") - .withChildNode(new DependencyNodeBuilder() - .withType(DependencyNodeBuilder.Type.WAR) - .withArtifactId("childAA") - .withVersion("1.0.0-SNAPSHOT") - .build()) - .build()) - .build()); - assertThrows(EnforcerRuleException.class, () -> addExcludeAndRunRule("*:*:*:war")); - } - - @Test - public void groupIdArtifactIdVersionTypeScope() { - EnforcerTestUtils.provideCollectDependencies( - EnforcerTestUtils.getDependencyNodeWithMultipleTestSnapshots()); - assertThrows(EnforcerRuleException.class, () -> addExcludeAndRunRule("*:*:*:*:test")); - } - - // @Test(expected = EnforcerRuleException.class) - // public void groupIdArtifactIdVersionTypeScopeClassifier() throws Exception { - // addExcludeAndRunRule("g:compile:1.0:jar:compile:one"); - // } - // - } - - public static class WildcardExcludesUsingTransitiveDependencies { - - private BannedDependenciesTestSetup setup; - - @BeforeEach - public void beforeMethod() throws IOException { - this.setup = new BannedDependenciesTestSetup(); - this.setup.setSearchTransitive(true); - } - - private void addExcludeAndRunRule(String toAdd) throws EnforcerRuleException { - this.setup.addExcludeAndRunRule(toAdd); - } - - @Test - public void testWildcardForGroupIdArtifactIdVersion() throws Exception { - assertThrows(EnforcerRuleException.class, () -> addExcludeAndRunRule("*:childA:1.0.0")); - } - - @Test - public void testWildCardForGroupIdArtifactId() { - assertThrows(EnforcerRuleException.class, () -> addExcludeAndRunRule("*:childA")); - } - - @Test - public void testWildcardForGroupIdWildcardForArtifactIdVersion() { - assertThrows(EnforcerRuleException.class, () -> addExcludeAndRunRule("*:*:1.0.0")); - } - - @Test - public void testWildcardForGroupIdArtifactIdWildcardForVersion() { - assertThrows(EnforcerRuleException.class, () -> addExcludeAndRunRule("*:childA:*")); - } - } - - public static class PartialWildcardExcludesUsingTransitiveDependencies { - - private BannedDependenciesTestSetup setup; - - @BeforeEach - public void beforeMethod() throws IOException { - this.setup = new BannedDependenciesTestSetup(); - this.setup.setSearchTransitive(true); - } - - private void addExcludeAndRunRule(String toAdd) throws EnforcerRuleException { - this.setup.addExcludeAndRunRule(toAdd); - } - - @Test - public void groupIdArtifactIdWithWildcard() { - assertThrows(EnforcerRuleException.class, () -> addExcludeAndRunRule("default-group:ch*")); - } - - @Test - public void groupIdArtifactIdVersionTypeWildcardScope() { - assertThrows(EnforcerRuleException.class, () -> addExcludeAndRunRule("default-group:childA:1.0.0:jar:co*")); - } - - @Test - public void groupIdArtifactIdVersionWildcardTypeScope() { - assertThrows( - EnforcerRuleException.class, () -> addExcludeAndRunRule("default-group:childA:1.0.0:j*:compile")); - } - } - - public static class IllegalFormatsTests { - private BannedDependenciesTestSetup setup; - - @BeforeEach - public void beforeMethod() throws IOException { - this.setup = new BannedDependenciesTestSetup(); - this.setup.setSearchTransitive(true); - } - - private void addExcludeAndRunRule(String toAdd) throws EnforcerRuleException { - this.setup.addExcludeAndRunRule(toAdd); - } - - @Test - public void onlyThreeColonsWithoutAnythingElse() { - assertThrows(IllegalArgumentException.class, () -> addExcludeAndRunRule(":::")); - } - - @Test - public void onlySevenColonsWithoutAnythingElse() { - assertThrows(IllegalArgumentException.class, () -> addExcludeAndRunRule(":::::::")); - } - } - - public static class IncludesExcludesNoTransitive { - private BannedDependenciesTestSetup setup; - - @BeforeEach - public void beforeMethod() throws IOException { - this.setup = new BannedDependenciesTestSetup(); - this.setup.setSearchTransitive(false); - } - - private void addIncludeExcludeAndRunRule(String incAdd, String excAdd) throws EnforcerRuleException { - this.setup.addIncludeExcludeAndRunRule(incAdd, excAdd); - } - - @Test - public void includeEverythingAndExcludeEverythign() throws EnforcerRuleException { - addIncludeExcludeAndRunRule("*", "*"); - } - - @Test - public void includeEverythingAndExcludeEveryGroupIdAndScopeRuntime() throws EnforcerRuleException { - addIncludeExcludeAndRunRule("*", "*:runtime"); - } - - @Test - public void includeEverythingAndExcludeEveryGroupIdAndScopeRuntimeYYYY() { - assertThrows(EnforcerRuleException.class, () -> addIncludeExcludeAndRunRule("*:test", "*:runtime")); - } - } -} diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java deleted file mode 100644 index 41569e1..0000000 --- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.maven.plugins.enforcer; - -import java.io.IOException; -import java.util.Collections; - -import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; -import org.apache.maven.enforcer.rules.utils.EnforcerRuleUtilsHelper; -import org.apache.maven.plugin.testing.ArtifactStubFactory; -import org.apache.maven.project.MavenProject; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.apache.maven.plugins.enforcer.EnforcerTestUtils.getDependencyNodeWithMultipleSnapshots; -import static org.apache.maven.plugins.enforcer.EnforcerTestUtils.getDependencyNodeWithMultipleTestSnapshots; -import static org.apache.maven.plugins.enforcer.EnforcerTestUtils.provideCollectDependencies; -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Unit tests for {@link RequireReleaseDeps} - * - * @author <a href="mailto:bri...@apache.org">Brian Fox</a>, Andrzej Jarmoniuk - */ -public class TestRequireReleaseDeps { - private MavenProject project; - private static final ArtifactStubFactory ARTIFACT_STUB_FACTORY = new ArtifactStubFactory(); - ; - private EnforcerRuleHelper ruleHelper; - private RequireReleaseDeps rule; - - @BeforeEach - public void setUp() { - project = new MockProject(); - ruleHelper = EnforcerTestUtils.getHelper(project); - rule = new RequireReleaseDeps(); - } - - @Test - public void testSearchNonTransitive() throws IOException { - project.setDependencyArtifacts(ARTIFACT_STUB_FACTORY.getScopedArtifacts()); - rule.setSearchTransitive(false); - EnforcerRuleUtilsHelper.execute(rule, ruleHelper, false); - } - - @Test - public void testSearchTransitiveMultipleFailures() { - rule.setSearchTransitive(true); - provideCollectDependencies(getDependencyNodeWithMultipleSnapshots()); - EnforcerRuleUtilsHelper.execute(rule, ruleHelper, true); - } - - @Test - public void testSearchTransitiveNoFailures() { - rule.setSearchTransitive(true); - EnforcerRuleUtilsHelper.execute(rule, ruleHelper, false); - } - - @Test - public void testShouldFailOnlyWhenRelease() throws IOException { - project.setArtifact(ARTIFACT_STUB_FACTORY.getSnapshotArtifact()); - provideCollectDependencies(getDependencyNodeWithMultipleSnapshots()); - rule.setOnlyWhenRelease(true); - EnforcerRuleUtilsHelper.execute(rule, ruleHelper, false); - } - - @Test - void testWildcardExcludeTests() throws Exception { - rule.setExcludes(Collections.singletonList("*:*:*:*:test")); - provideCollectDependencies(getDependencyNodeWithMultipleTestSnapshots()); - rule.setSearchTransitive(true); - EnforcerRuleUtilsHelper.execute(rule, ruleHelper, false); - } - - @Test - void testWildcardExcludeAll() throws Exception { - rule.setExcludes(Collections.singletonList("*")); - provideCollectDependencies(getDependencyNodeWithMultipleSnapshots()); - rule.setSearchTransitive(true); - EnforcerRuleUtilsHelper.execute(rule, ruleHelper, false); - } - - @Test - void testExcludesAndIncludes() throws Exception { - rule.setExcludes(Collections.singletonList("*")); - rule.setIncludes(Collections.singletonList("*:*:*:*:test")); - provideCollectDependencies(getDependencyNodeWithMultipleTestSnapshots()); - rule.setSearchTransitive(true); - EnforcerRuleUtilsHelper.execute(rule, ruleHelper, true); - } - - /** - * Test id. - */ - @Test - void testId() { - assertThat(rule.getCacheId()).isEqualTo("0"); - } - - @Test - void testFailWhenParentIsSnapshotFalse() throws IOException { - MavenProject parent = new MockProject(); - parent.setArtifact(ARTIFACT_STUB_FACTORY.getSnapshotArtifact()); - project.setParent(parent); - rule.setFailWhenParentIsSnapshot(false); - EnforcerRuleUtilsHelper.execute(rule, ruleHelper, false); - } - - @Test - void parentShouldBeExcluded() throws IOException { - MavenProject parent = new MockProject(); - parent.setArtifact(ARTIFACT_STUB_FACTORY.getSnapshotArtifact()); - project.setParent(parent); - rule.setExcludes(Collections.singletonList(parent.getArtifact().getGroupId() + ":*")); - EnforcerRuleUtilsHelper.execute(rule, ruleHelper, false); - } -} diff --git a/maven-enforcer-plugin/src/it/projects/MENFORCER-434/verify.groovy b/maven-enforcer-plugin/src/it/projects/MENFORCER-434/verify.groovy index 6ea93b4..6b1c801 100644 --- a/maven-enforcer-plugin/src/it/projects/MENFORCER-434/verify.groovy +++ b/maven-enforcer-plugin/src/it/projects/MENFORCER-434/verify.groovy @@ -18,7 +18,7 @@ */ def buildLog = new File(basedir, 'build.log').text -assert buildLog.contains('[ERROR] Rule 0: org.apache.maven.plugins.enforcer.BannedDependencies failed with message:') +assert buildLog.contains('[ERROR] Rule 0: org.apache.maven.enforcer.rules.dependency.BannedDependencies failed with message:') assert buildLog.contains(' org.apache.logging.log4j:log4j-core:jar:2.19.0') assert buildLog.contains(' org.apache.logging.log4j:log4j-api:jar:2.19.0 <--- banned via the exclude/include list') diff --git a/maven-enforcer-plugin/src/it/projects/ban-transitive-dependencies-fail/verify.groovy b/maven-enforcer-plugin/src/it/projects/ban-transitive-dependencies-fail/verify.groovy index e8381cd..93df359 100644 --- a/maven-enforcer-plugin/src/it/projects/ban-transitive-dependencies-fail/verify.groovy +++ b/maven-enforcer-plugin/src/it/projects/ban-transitive-dependencies-fail/verify.groovy @@ -17,5 +17,5 @@ * under the License. */ File buildLog = new File( basedir, 'build.log' ) -assert buildLog.text.contains( '[ERROR] Rule 0: org.apache.maven.plugins.enforcer.BanTransitiveDependencies failed with message:' ) +assert buildLog.text.contains( '[ERROR] Rule 0: org.apache.maven.enforcer.rules.dependency.BanTransitiveDependencies failed with message:' ) \ No newline at end of file diff --git a/maven-enforcer-plugin/src/it/projects/banned-dependencies-versionrange-fail/verify.groovy b/maven-enforcer-plugin/src/it/projects/banned-dependencies-versionrange-fail/verify.groovy index 8a0f295..73d370e 100644 --- a/maven-enforcer-plugin/src/it/projects/banned-dependencies-versionrange-fail/verify.groovy +++ b/maven-enforcer-plugin/src/it/projects/banned-dependencies-versionrange-fail/verify.groovy @@ -17,5 +17,5 @@ * under the License. */ File buildLog = new File( basedir, 'build.log' ) -assert buildLog.text.contains( '[ERROR] Rule 0: org.apache.maven.plugins.enforcer.BannedDependencies failed with message:' ) +assert buildLog.text.contains( '[ERROR] Rule 0: org.apache.maven.enforcer.rules.dependency.BannedDependencies failed with message:' ) \ No newline at end of file diff --git a/maven-enforcer-plugin/src/it/projects/dependency-convergence_transitive_provided/verify.groovy b/maven-enforcer-plugin/src/it/projects/dependency-convergence_transitive_provided/verify.groovy index b89327f..23c2190 100644 --- a/maven-enforcer-plugin/src/it/projects/dependency-convergence_transitive_provided/verify.groovy +++ b/maven-enforcer-plugin/src/it/projects/dependency-convergence_transitive_provided/verify.groovy @@ -20,7 +20,7 @@ File buildLog = new File(basedir, 'build.log') rulesExecuted = buildLog.readLines() - .findAll {it == '[INFO] Rule 0: org.apache.maven.plugins.enforcer.DependencyConvergence executed'} + .findAll {it == '[INFO] Rule 0: org.apache.maven.enforcer.rules.dependency.DependencyConvergence executed'} // Rule should be executed in each module assert rulesExecuted.size() == 3 \ No newline at end of file diff --git a/maven-enforcer-plugin/src/it/projects/multimodule-ban-transitive-dependencies_failure/verify.groovy b/maven-enforcer-plugin/src/it/projects/multimodule-ban-transitive-dependencies_failure/verify.groovy index c6657d7..7415721 100644 --- a/maven-enforcer-plugin/src/it/projects/multimodule-ban-transitive-dependencies_failure/verify.groovy +++ b/maven-enforcer-plugin/src/it/projects/multimodule-ban-transitive-dependencies_failure/verify.groovy @@ -18,5 +18,5 @@ */ File buildLog = new File( basedir, 'build.log' ) -assert buildLog.text.contains( 'Rule 0: org.apache.maven.plugins.enforcer.BanTransitiveDependencies failed with message:' ) +assert buildLog.text.contains( 'Rule 0: org.apache.maven.enforcer.rules.dependency.BanTransitiveDependencies failed with message:' ) assert buildLog.text.contains( 'org.apache.maven.its.enforcer:module1:jar:1.0-SNAPSHOT has transitive dependencies:' ) diff --git a/maven-enforcer-plugin/src/it/projects/multimodule-require-release-dependencies-exclude_failure/verify.groovy b/maven-enforcer-plugin/src/it/projects/multimodule-require-release-dependencies-exclude_failure/verify.groovy index f091ed1..322a8de 100644 --- a/maven-enforcer-plugin/src/it/projects/multimodule-require-release-dependencies-exclude_failure/verify.groovy +++ b/maven-enforcer-plugin/src/it/projects/multimodule-require-release-dependencies-exclude_failure/verify.groovy @@ -18,5 +18,5 @@ */ File buildLog = new File( basedir, 'build.log' ) -assert buildLog.text.contains( 'Rule 0: org.apache.maven.plugins.enforcer.RequireReleaseDeps failed with message:' ) +assert buildLog.text.contains( 'Rule 0: org.apache.maven.enforcer.rules.dependency.RequireReleaseDeps failed with message:' ) assert buildLog.text =~ /org.apache.maven.its.enforcer:module1:jar:1.0-SNAPSHOT.*is not a release dependency/ \ No newline at end of file diff --git a/maven-enforcer-plugin/src/it/projects/multimodule-require-release-dependencies-snapshot-parent_failure/verify.groovy b/maven-enforcer-plugin/src/it/projects/multimodule-require-release-dependencies-snapshot-parent_failure/verify.groovy index eb30892..39b7720 100644 --- a/maven-enforcer-plugin/src/it/projects/multimodule-require-release-dependencies-snapshot-parent_failure/verify.groovy +++ b/maven-enforcer-plugin/src/it/projects/multimodule-require-release-dependencies-snapshot-parent_failure/verify.groovy @@ -18,5 +18,5 @@ */ File buildLog = new File( basedir, 'build.log' ) -assert buildLog.text.contains( 'Rule 0: org.apache.maven.plugins.enforcer.RequireReleaseDeps failed with message:' ) +assert buildLog.text.contains( 'Rule 0: org.apache.maven.enforcer.rules.dependency.RequireReleaseDeps failed with message:' ) assert buildLog.text.contains( 'Parent Cannot be a snapshot: org.apache.maven.its.enforcer:multimodule:pom:1.0-SNAPSHOT' ) diff --git a/maven-enforcer-plugin/src/it/projects/non-exeisting-optional-dependency/verify.groovy b/maven-enforcer-plugin/src/it/projects/non-exeisting-optional-dependency/verify.groovy index 3916cf3..4529a4a 100644 --- a/maven-enforcer-plugin/src/it/projects/non-exeisting-optional-dependency/verify.groovy +++ b/maven-enforcer-plugin/src/it/projects/non-exeisting-optional-dependency/verify.groovy @@ -23,8 +23,8 @@ assert buildLog.contains( '[WARNING] The POM for org.example:test-not-existing:j // rule executed assert buildLog.contains( '[INFO] Rule 0: org.apache.maven.enforcer.rules.AlwaysPass executed' ) -assert buildLog.contains( '[INFO] Rule 1: org.apache.maven.plugins.enforcer.BanTransitiveDependencies executed' ) -assert buildLog.contains( '[INFO] Rule 2: org.apache.maven.plugins.enforcer.BannedDependencies executed' ) -assert buildLog.contains( '[INFO] Rule 3: org.apache.maven.plugins.enforcer.DependencyConvergence executed') -assert buildLog.contains( '[INFO] Rule 4: org.apache.maven.plugins.enforcer.RequireReleaseDeps executed') -assert buildLog.contains( '[INFO] Rule 5: org.apache.maven.plugins.enforcer.RequireUpperBoundDeps executed') +assert buildLog.contains( '[INFO] Rule 1: org.apache.maven.enforcer.rules.dependency.BanTransitiveDependencies executed' ) +assert buildLog.contains( '[INFO] Rule 2: org.apache.maven.enforcer.rules.dependency.BannedDependencies executed' ) +assert buildLog.contains( '[INFO] Rule 3: org.apache.maven.enforcer.rules.dependency.DependencyConvergence executed') +assert buildLog.contains( '[INFO] Rule 4: org.apache.maven.enforcer.rules.dependency.RequireReleaseDeps executed') +assert buildLog.contains( '[INFO] Rule 5: org.apache.maven.enforcer.rules.dependency.RequireUpperBoundDeps executed') diff --git a/maven-enforcer-plugin/src/it/projects/require-upper-bound-dependencies-managed_failure/verify.groovy b/maven-enforcer-plugin/src/it/projects/require-upper-bound-dependencies-managed_failure/verify.groovy index 35b2b66..94c0cac 100644 --- a/maven-enforcer-plugin/src/it/projects/require-upper-bound-dependencies-managed_failure/verify.groovy +++ b/maven-enforcer-plugin/src/it/projects/require-upper-bound-dependencies-managed_failure/verify.groovy @@ -18,7 +18,7 @@ */ def LS = System.getProperty( "line.separator" ) File buildLog = new File( basedir, 'build.log' ) -assert buildLog.text.contains( 'Rule 0: org.apache.maven.plugins.enforcer.RequireUpperBoundDeps failed with message:' ) +assert buildLog.text.contains( 'Rule 0: org.apache.maven.enforcer.rules.dependency.RequireUpperBoundDeps failed with message:' ) def message = 'Failed while enforcing RequireUpperBoundDeps. The error(s) are [' + LS+ 'Require upper bound dependencies error for org.apache.maven.plugins.enforcer.its:menforcer146-x:1.1 paths to dependency are:' + LS+ diff --git a/maven-enforcer-plugin/src/it/projects/require-upper-bound-dependencies-unique_failure/verify.groovy b/maven-enforcer-plugin/src/it/projects/require-upper-bound-dependencies-unique_failure/verify.groovy index d65ff00..21b9ba5 100644 --- a/maven-enforcer-plugin/src/it/projects/require-upper-bound-dependencies-unique_failure/verify.groovy +++ b/maven-enforcer-plugin/src/it/projects/require-upper-bound-dependencies-unique_failure/verify.groovy @@ -17,5 +17,5 @@ * under the License. */ File buildLog = new File( basedir, 'build.log' ) -assert buildLog.text.contains( 'Rule 0: org.apache.maven.plugins.enforcer.RequireUpperBoundDeps failed with message:' ) +assert buildLog.text.contains( 'Rule 0: org.apache.maven.enforcer.rules.dependency.RequireUpperBoundDeps failed with message:' ) assert buildLog.text.contains( 'Require upper bound dependencies error for org.apache.maven.plugins.enforcer.its:menforcer134_model:1.0-20130423.042904-7222 paths to dependency are:' ) diff --git a/maven-enforcer-plugin/src/it/projects/require-upper-bound-deps_failure/verify.groovy b/maven-enforcer-plugin/src/it/projects/require-upper-bound-deps_failure/verify.groovy index 38bb648..8ad1ba3 100644 --- a/maven-enforcer-plugin/src/it/projects/require-upper-bound-deps_failure/verify.groovy +++ b/maven-enforcer-plugin/src/it/projects/require-upper-bound-deps_failure/verify.groovy @@ -19,7 +19,7 @@ def LS = System.getProperty( "line.separator" ) File buildLog = new File( basedir, 'build.log' ) -assert buildLog.text.contains( 'Rule 0: org.apache.maven.plugins.enforcer.RequireUpperBoundDeps failed with message:' ) +assert buildLog.text.contains( 'Rule 0: org.apache.maven.enforcer.rules.dependency.RequireUpperBoundDeps failed with message:' ) def message = 'Require upper bound dependencies error for org.apache.maven.plugins.enforcer.its:menforcer128_api:1.4.0 paths to dependency are:'+LS+ '+-org.apache.maven.plugins.enforcer.its:menforcer128:1.0-SNAPSHOT'+LS+ diff --git a/maven-enforcer-plugin/src/it/projects/require-upper-bound-deps_failure_show_scopes/verify.groovy b/maven-enforcer-plugin/src/it/projects/require-upper-bound-deps_failure_show_scopes/verify.groovy index 18eb75d..42ca1ab 100644 --- a/maven-enforcer-plugin/src/it/projects/require-upper-bound-deps_failure_show_scopes/verify.groovy +++ b/maven-enforcer-plugin/src/it/projects/require-upper-bound-deps_failure_show_scopes/verify.groovy @@ -19,7 +19,7 @@ def LS = System.getProperty( "line.separator" ) File buildLog = new File( basedir, 'build.log' ) -assert buildLog.text.contains( 'Rule 0: org.apache.maven.plugins.enforcer.RequireUpperBoundDeps failed with message:' ) +assert buildLog.text.contains( 'Rule 0: org.apache.maven.enforcer.rules.dependency.RequireUpperBoundDeps failed with message:' ) def message = 'Require upper bound dependencies error for org.apache.maven.plugins.enforcer.its:menforcer128_api:1.4.0 [runtime] paths to dependency are:'+LS+ '+-org.apache.maven.plugins.enforcer.its:menforcer313:1.0-SNAPSHOT'+LS+ diff --git a/maven-enforcer-plugin/src/it/projects/require-upper-bound-deps_includes/verify.groovy b/maven-enforcer-plugin/src/it/projects/require-upper-bound-deps_includes/verify.groovy index db22ccf..e74bee3 100644 --- a/maven-enforcer-plugin/src/it/projects/require-upper-bound-deps_includes/verify.groovy +++ b/maven-enforcer-plugin/src/it/projects/require-upper-bound-deps_includes/verify.groovy @@ -19,7 +19,7 @@ def LS = System.getProperty( "line.separator" ) File buildLog = new File( basedir, 'build.log' ) -assert buildLog.text.contains( 'Rule 0: org.apache.maven.plugins.enforcer.RequireUpperBoundDeps failed with message:' ) +assert buildLog.text.contains( 'Rule 0: org.apache.maven.enforcer.rules.dependency.RequireUpperBoundDeps failed with message:' ) def message = 'Require upper bound dependencies error for org.apache.maven.plugins.enforcer.its:menforcer128_api:1.4.0 paths to dependency are:'+LS+ '+-org.apache.maven.plugins.enforcer.its:menforcer128:1.0-SNAPSHOT'+LS+