You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sj...@apache.org on 2022/05/30 20:34:15 UTC
[maven-enforcer] 01/01: [MENFORCER-389] Allow filtering of parent in requireReleaseDeps
This is an automated email from the ASF dual-hosted git repository.
sjaranowski pushed a commit to branch MENFORCER-389
in repository https://gitbox.apache.org/repos/asf/maven-enforcer.git
commit 441a02fde5232abde685d12667f3838ed7878307
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Mon May 30 22:33:21 2022 +0200
[MENFORCER-389] Allow filtering of parent in requireReleaseDeps
---
.../maven/plugins/enforcer/RequireReleaseDeps.java | 17 +++++++---
.../plugins/enforcer/TestRequireReleaseDeps.java | 36 ++++++++++++++++++----
2 files changed, 43 insertions(+), 10 deletions(-)
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java
index 783ea70..783b9b3 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java
@@ -19,8 +19,10 @@ package org.apache.maven.plugins.enforcer;
* under the License.
*/
+import java.util.Collections;
import java.util.HashSet;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import org.apache.maven.artifact.Artifact;
@@ -43,8 +45,6 @@ public class RequireReleaseDeps
/**
* Allows this rule to execute only when this project is a release.
*
- * @parameter
- *
* @see {@link #setOnlyWhenRelease(boolean)}
* @see {@link #isOnlyWhenRelease()}
@@ -54,8 +54,6 @@ public class RequireReleaseDeps
/**
* Allows this rule to fail when the parent is defined as a snapshot.
*
- * @parameter
- *
* @see {@link #setFailWhenParentIsSnapshot(boolean)}
* @see {@link #isFailWhenParentIsSnapshot()}
*/
@@ -98,6 +96,7 @@ public class RequireReleaseDeps
{
callSuper = true;
}
+
if ( callSuper )
{
super.execute( helper );
@@ -107,7 +106,17 @@ public class RequireReleaseDeps
{
project = getProject( helper );
}
+
Artifact parentArtifact = project.getParentArtifact();
+
+ if ( parentArtifact != null )
+ {
+ Set<Artifact> artifacts = filterArtifacts( Collections.singleton( parentArtifact ) );
+ parentArtifact = Optional.ofNullable( artifacts )
+ .flatMap( s -> s.stream().findFirst() )
+ .orElse( null );
+ }
+
if ( parentArtifact != null && parentArtifact.isSnapshot() )
{
throw new EnforcerRuleException( "Parent Cannot be a snapshot: " + parentArtifact.getId() );
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
index 5582d12..89a2fa6 100644
--- 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
@@ -19,6 +19,7 @@ package org.apache.maven.plugins.enforcer;
* under the License.
*/
+import java.io.IOException;
import java.util.Collections;
import java.util.Set;
@@ -30,12 +31,14 @@ import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuildingRequest;
import org.junit.jupiter.api.Test;
+import static org.assertj.core.api.Assertions.assertThat;
+
/**
- * The Class TestNoSnapshots.
+ * The Class TestRequireReleaseDeps.
*
* @author <a href="mailto:brianf@apache.org">Brian Fox</a>
*/
-public class TestRequireReleaseDeps
+class TestRequireReleaseDeps
{
/**
@@ -44,7 +47,7 @@ public class TestRequireReleaseDeps
* @throws Exception if any occurs
*/
@Test
- public void testRule()
+ void testRule()
throws Exception
{
ArtifactStubFactory factory = new ArtifactStubFactory();
@@ -90,7 +93,7 @@ public class TestRequireReleaseDeps
}
@Test
- public void testWildcardIgnore()
+ void testWildcardIgnore()
throws Exception
{
RequireReleaseDeps rule = newRequireReleaseDeps();
@@ -112,12 +115,33 @@ public class TestRequireReleaseDeps
* Test id.
*/
@Test
- public void testId()
+ void testId()
{
RequireReleaseDeps rule = newRequireReleaseDeps();
- rule.getCacheId();
+ assertThat( rule.getCacheId() ).isEqualTo( "0" );
}
+ @Test
+ void parentShouldBeExcluded() throws IOException
+ {
+
+ ArtifactStubFactory factory = new ArtifactStubFactory();
+ MockProject project = new MockProject();
+ project.setArtifact( factory.getSnapshotArtifact() );
+
+ MavenProject parent = new MockProject();
+ parent.setArtifact( factory.getSnapshotArtifact() );
+ project.setParent( parent );
+
+ EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
+
+ RequireReleaseDeps rule = newRequireReleaseDeps();
+ rule.setExcludes( Collections.singletonList( parent.getArtifact().getGroupId() + ":*" ) );
+
+ EnforcerRuleUtilsHelper.execute( rule, helper, false );
+ }
+
+
private RequireReleaseDeps newRequireReleaseDeps()
{
return new RequireReleaseDeps()