From 2580b9b03134ff4d2607d56deb93912742012417 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Fri, 22 Apr 2022 17:54:42 +0200 Subject: [PATCH 1/4] [MDEPLOY-291] Update POM parent and Maven Update plugin build: * update parent to 36 * update maven to 3.8.5 (reasoning below) * up the plugin to Java8 This plugin along with m-install-p versions 3.x line (3.0.0-Mx) does not work with any so far released Maven 3.x line (see MNG-7055). The ONLY maven 3.x they will be usable with is upcoming 3.9.0, that has fix for MNG-7055 backported, but OTOH, it is already Java8, so no point in keeping the plugin on anything below. --- https://issues.apache.org/jira/browse/MDEPLOY-291 --- pom.xml | 80 ++++++++++++------- .../plugins/deploy/DeployFileMojoTest.java | 20 +++-- .../maven/plugins/deploy/DeployMojoTest.java | 17 ++-- .../apache/maven/plugins/deploy/Utils.java | 2 +- .../deploy/stubs/ArtifactRepositoryStub.java | 12 +++ 5 files changed, 86 insertions(+), 45 deletions(-) diff --git a/pom.xml b/pom.xml index bb3114c5..d86ba568 100644 --- a/pom.xml +++ b/pom.xml @@ -25,8 +25,8 @@ under the License. org.apache.maven.plugins maven-plugins - 34 - ../../pom/maven/maven-plugins/pom.xml + 36 + maven-deploy-plugin @@ -63,8 +63,9 @@ under the License. - 3.0 - 7 + 3.8.5 + 1.6.3 + 8 2021-12-27T14:11:19Z @@ -73,50 +74,61 @@ under the License. org.apache.maven maven-plugin-api ${mavenVersion} + provided org.apache.maven maven-core ${mavenVersion} + provided org.apache.maven maven-model ${mavenVersion} + provided org.apache.maven maven-artifact ${mavenVersion} + provided + + + + org.slf4j + slf4j-api + 1.7.36 + provided - org.apache.maven.shared maven-artifact-transfer 0.13.1 - commons-io commons-io - 2.5 + 2.11.0 - + + org.codehaus.plexus + plexus-utils + 3.4.1 + + org.apache.maven.plugin-tools maven-plugin-annotations provided - - org.codehaus.plexus - plexus-utils - 3.2.0 - + + org.apache.maven.plugin-testing maven-plugin-testing-harness - 2.1 + 3.3.0 test @@ -126,33 +138,45 @@ under the License. test - org.mockito - mockito-core - 2.28.2 + org.apache.maven + maven-resolver-provider + ${mavenVersion} test - junit - junit - 4.13.1 + org.apache.maven.resolver + maven-resolver-connector-basic + ${resolverVersion} test - org.sonatype.aether - aether-connector-file - 1.7 + org.apache.maven.resolver + maven-resolver-transport-file + ${resolverVersion} test - org.slf4j - slf4j-api - 1.7.5 - provided + org.apache.maven.resolver + maven-resolver-transport-http + ${resolverVersion} + test + + + org.mockito + mockito-core + 4.4.0 + test + + + junit + junit + 4.13.2 + test org.slf4j slf4j-nop - 1.7.5 + 1.7.36 test diff --git a/src/test/java/org/apache/maven/plugins/deploy/DeployFileMojoTest.java b/src/test/java/org/apache/maven/plugins/deploy/DeployFileMojoTest.java index 6c7064bb..371838bd 100644 --- a/src/test/java/org/apache/maven/plugins/deploy/DeployFileMojoTest.java +++ b/src/test/java/org/apache/maven/plugins/deploy/DeployFileMojoTest.java @@ -30,11 +30,12 @@ import org.apache.maven.model.Model; import org.apache.maven.plugin.testing.AbstractMojoTestCase; import org.apache.maven.project.ProjectBuildingRequest; -import org.apache.maven.repository.internal.MavenRepositorySystemSession; +import org.eclipse.aether.DefaultRepositorySystemSession; +import org.eclipse.aether.repository.LocalRepository; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager; +import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory; /** * @author Allan Ramirez @@ -91,9 +92,10 @@ public void testBasicDeployFile() assertNotNull( mojo ); ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class ); + when( buildingRequest.getRepositoryMerging() ).thenReturn( ProjectBuildingRequest.RepositoryMerging.POM_DOMINANT ); when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest ); - MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession(); - repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( LOCAL_REPO ) ); + DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession(); + repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repositorySession, new LocalRepository( LOCAL_REPO ) ) ); when( buildingRequest.getRepositorySession() ).thenReturn( repositorySession ); String groupId = (String) getVariableValueFromObject( mojo, "groupId" ); @@ -192,9 +194,10 @@ public void testDeployIfClassifierIsSet() assertNotNull( mojo ); ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class ); + when( buildingRequest.getRepositoryMerging() ).thenReturn( ProjectBuildingRequest.RepositoryMerging.POM_DOMINANT ); when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest ); - MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession(); - repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( LOCAL_REPO ) ); + DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession(); + repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repositorySession, new LocalRepository( LOCAL_REPO ) ) ); when( buildingRequest.getRepositorySession() ).thenReturn( repositorySession ); String classifier = ( String ) getVariableValueFromObject( mojo, "classifier" ); @@ -240,9 +243,10 @@ public void testDeployIfArtifactIsNotJar() assertNotNull( mojo ); ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class ); + when( buildingRequest.getRepositoryMerging() ).thenReturn( ProjectBuildingRequest.RepositoryMerging.POM_DOMINANT ); when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest ); - MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession(); - repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( LOCAL_REPO ) ); + DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession(); + repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repositorySession, new LocalRepository( LOCAL_REPO ) ) ); when( buildingRequest.getRepositorySession() ).thenReturn( repositorySession ); String groupId = (String) getVariableValueFromObject( mojo, "groupId" ); diff --git a/src/test/java/org/apache/maven/plugins/deploy/DeployMojoTest.java b/src/test/java/org/apache/maven/plugins/deploy/DeployMojoTest.java index 63fe2dee..6404f5ad 100644 --- a/src/test/java/org/apache/maven/plugins/deploy/DeployMojoTest.java +++ b/src/test/java/org/apache/maven/plugins/deploy/DeployMojoTest.java @@ -40,14 +40,15 @@ import org.apache.maven.plugins.deploy.stubs.DeployArtifactStub; import org.apache.maven.project.MavenProject; import org.apache.maven.project.ProjectBuildingRequest; -import org.apache.maven.repository.internal.MavenRepositorySystemSession; import org.apache.maven.shared.transfer.project.deploy.ProjectDeployerRequest; import org.codehaus.plexus.util.FileUtils; +import org.eclipse.aether.DefaultRepositorySystemSession; +import org.eclipse.aether.repository.LocalRepository; import org.junit.Ignore; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager; +import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory; /** * @author Allan Ramirez @@ -132,8 +133,8 @@ public void testBasicDeploy() ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class ); when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest ); - MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession(); - repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( LOCAL_REPO ) ); + DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession(); + repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repositorySession, new LocalRepository( LOCAL_REPO ) ) ); when( buildingRequest.getRepositorySession() ).thenReturn( repositorySession ); File file = new File( getBasedir(), @@ -303,8 +304,8 @@ public void testBasicDeployWithPackagingAsPom() ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class ); when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest ); - MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession(); - repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( LOCAL_REPO ) ); + DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession(); + repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repositorySession, new LocalRepository( LOCAL_REPO ) ) ); when( buildingRequest.getRepositorySession() ).thenReturn( repositorySession ); File pomFile = new File( getBasedir(), @@ -415,8 +416,8 @@ public void testDeployWithAttachedArtifacts() ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class ); when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest ); - MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession(); - repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( LOCAL_REPO ) ); + DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession(); + repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repositorySession, new LocalRepository( LOCAL_REPO ) ) ); when( buildingRequest.getRepositorySession() ).thenReturn( repositorySession ); MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "project" ); diff --git a/src/test/java/org/apache/maven/plugins/deploy/Utils.java b/src/test/java/org/apache/maven/plugins/deploy/Utils.java index 4df74424..f4acbc9d 100644 --- a/src/test/java/org/apache/maven/plugins/deploy/Utils.java +++ b/src/test/java/org/apache/maven/plugins/deploy/Utils.java @@ -26,7 +26,7 @@ import java.util.Map; import org.apache.maven.plugin.MojoExecutionException; -import org.sonatype.aether.util.ChecksumUtils; +import org.eclipse.aether.util.ChecksumUtils; /** * A utility class to assist testing. diff --git a/src/test/java/org/apache/maven/plugins/deploy/stubs/ArtifactRepositoryStub.java b/src/test/java/org/apache/maven/plugins/deploy/stubs/ArtifactRepositoryStub.java index 0b94ebed..a036ce33 100644 --- a/src/test/java/org/apache/maven/plugins/deploy/stubs/ArtifactRepositoryStub.java +++ b/src/test/java/org/apache/maven/plugins/deploy/stubs/ArtifactRepositoryStub.java @@ -131,4 +131,16 @@ public boolean isBlacklisted() { return blacklisted; } + + @Override + public boolean isBlocked() + { + return false; + } + + @Override + public void setBlocked( boolean b ) + { + + } } From a57a57727497c8e8f320a1d3a368d5aa8dbfcc74 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Mon, 2 May 2022 16:08:32 +0200 Subject: [PATCH 2/4] Pull slf4j version to property To not repeat it. --- pom.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index d86ba568..bffcc225 100644 --- a/pom.xml +++ b/pom.xml @@ -64,6 +64,7 @@ under the License. 3.8.5 + 1.7.36 1.6.3 8 2021-12-27T14:11:19Z @@ -98,7 +99,7 @@ under the License. org.slf4j slf4j-api - 1.7.36 + ${slf4j.version} provided @@ -176,7 +177,7 @@ under the License. org.slf4j slf4j-nop - 1.7.36 + ${slf4j.version} test From 04d9b11ffdc8cc2f8a870e7ff76aa0ac843456bf Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Mon, 2 May 2022 16:48:00 +0200 Subject: [PATCH 3/4] undo some bits: * leave project java7 * up to maven 3.2.5 (not 3.8.5) * warn if maven-plugin is deployed with maven older than 3.9.0 --- pom.xml | 38 +++++++++++------- .../plugins/deploy/AbstractDeployMojo.java | 39 ++++++++++++++++++- .../maven/plugins/deploy/DeployFileMojo.java | 1 + .../maven/plugins/deploy/DeployMojo.java | 1 + .../deploy/stubs/ArtifactRepositoryStub.java | 4 +- 5 files changed, 66 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index bffcc225..0c3fd586 100644 --- a/pom.xml +++ b/pom.xml @@ -63,10 +63,10 @@ under the License. - 3.8.5 - 1.7.36 - 1.6.3 - 8 + 3.2.5 + 1.7.5 + 1.0.0.v20140518 + 7 2021-12-27T14:11:19Z @@ -110,12 +110,22 @@ under the License. commons-io commons-io - 2.11.0 + 2.6 org.codehaus.plexus plexus-utils - 3.4.1 + 3.3.1 + + + org.eclipse.aether + aether-api + ${resolverVersion} + + + org.eclipse.aether + aether-util + ${resolverVersion} @@ -140,32 +150,32 @@ under the License. org.apache.maven - maven-resolver-provider + maven-aether-provider ${mavenVersion} test - org.apache.maven.resolver - maven-resolver-connector-basic + org.eclipse.aether + aether-connector-basic ${resolverVersion} test - org.apache.maven.resolver - maven-resolver-transport-file + org.eclipse.aether + aether-transport-file ${resolverVersion} test - org.apache.maven.resolver - maven-resolver-transport-http + org.eclipse.aether + aether-transport-http ${resolverVersion} test org.mockito mockito-core - 4.4.0 + 2.28.2 test diff --git a/src/main/java/org/apache/maven/plugins/deploy/AbstractDeployMojo.java b/src/main/java/org/apache/maven/plugins/deploy/AbstractDeployMojo.java index f933e36c..3939a8ea 100644 --- a/src/main/java/org/apache/maven/plugins/deploy/AbstractDeployMojo.java +++ b/src/main/java/org/apache/maven/plugins/deploy/AbstractDeployMojo.java @@ -26,7 +26,12 @@ import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Parameter; +import org.apache.maven.rtinfo.RuntimeInformation; +import org.eclipse.aether.util.version.GenericVersionScheme; +import org.eclipse.aether.version.InvalidVersionSpecificationException; +import org.eclipse.aether.version.Version; /** * Abstract class for Deploy mojo's. @@ -52,7 +57,14 @@ public abstract class AbstractDeployMojo @Parameter( defaultValue = "${session}", readonly = true, required = true ) private MavenSession session; - + + @Component + private RuntimeInformation runtimeInformation; + + private static final String AFFECTED_MAVEN_PACKAGING = "maven-plugin"; + + private static final String FIXED_MAVEN_VERSION = "3.9.0"; + /* Setters and Getters */ void failIfOffline() @@ -79,4 +91,29 @@ protected final MavenSession getSession() { return session; } + + protected void warnIfAffectedPackagingAndMaven( final String packaging ) + { + if ( AFFECTED_MAVEN_PACKAGING.equals( packaging ) ) + { + try + { + GenericVersionScheme versionScheme = new GenericVersionScheme(); + Version fixedMavenVersion = versionScheme.parseVersion( FIXED_MAVEN_VERSION ); + Version currentMavenVersion = versionScheme.parseVersion( runtimeInformation.getMavenVersion() ); + if ( fixedMavenVersion.compareTo( currentMavenVersion ) > 0 ) + { + getLog().warn( "" ); + getLog().warn( "You are about to deploy a maven-plugin using Maven " + currentMavenVersion + "." ); + getLog().warn( "This plugin should be used ONLY with Maven 3.9.0 and newer, as MNG-7055" ); + getLog().warn( "is fixed in those versions of Maven only!" ); + getLog().warn( "" ); + } + } + catch ( InvalidVersionSpecificationException e ) + { + // skip it: Generic does not throw, only API contains this exception + } + } + } } diff --git a/src/main/java/org/apache/maven/plugins/deploy/DeployFileMojo.java b/src/main/java/org/apache/maven/plugins/deploy/DeployFileMojo.java index 43044218..12267e7e 100644 --- a/src/main/java/org/apache/maven/plugins/deploy/DeployFileMojo.java +++ b/src/main/java/org/apache/maven/plugins/deploy/DeployFileMojo.java @@ -481,6 +481,7 @@ public void execute() try { + warnIfAffectedPackagingAndMaven( packaging ); artifactDeployer.deploy( getSession().getProjectBuildingRequest(), deploymentRepository, deployableArtifacts ); } diff --git a/src/main/java/org/apache/maven/plugins/deploy/DeployMojo.java b/src/main/java/org/apache/maven/plugins/deploy/DeployMojo.java index ae26134b..4aaa971a 100644 --- a/src/main/java/org/apache/maven/plugins/deploy/DeployMojo.java +++ b/src/main/java/org/apache/maven/plugins/deploy/DeployMojo.java @@ -207,6 +207,7 @@ private void deployProject( ProjectBuildingRequest pbr, ProjectDeployerRequest p { try { + warnIfAffectedPackagingAndMaven( pir.getProject().getPackaging() ); projectDeployer.deploy( pbr, pir, repo ); } catch ( NoFileAssignedException e ) diff --git a/src/test/java/org/apache/maven/plugins/deploy/stubs/ArtifactRepositoryStub.java b/src/test/java/org/apache/maven/plugins/deploy/stubs/ArtifactRepositoryStub.java index a036ce33..92db6c19 100644 --- a/src/test/java/org/apache/maven/plugins/deploy/stubs/ArtifactRepositoryStub.java +++ b/src/test/java/org/apache/maven/plugins/deploy/stubs/ArtifactRepositoryStub.java @@ -132,13 +132,13 @@ public boolean isBlacklisted() return blacklisted; } - @Override + // @Override public boolean isBlocked() { return false; } - @Override + // @Override public void setBlocked( boolean b ) { From 952e1134d53178f5de34824b524ee1bfdd50434a Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Mon, 2 May 2022 16:51:47 +0200 Subject: [PATCH 4/4] Align propery key form with rest --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 0c3fd586..1284f130 100644 --- a/pom.xml +++ b/pom.xml @@ -64,7 +64,7 @@ under the License. 3.2.5 - 1.7.5 + 1.7.5 1.0.0.v20140518 7 2021-12-27T14:11:19Z @@ -99,7 +99,7 @@ under the License. org.slf4j slf4j-api - ${slf4j.version} + ${slf4jVersion} provided @@ -187,7 +187,7 @@ under the License. org.slf4j slf4j-nop - ${slf4j.version} + ${slf4jVersion} test