diff --git a/pom.xml b/pom.xml
index bb3114c5..1284f130 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,7 +63,9 @@ under the License.
- 3.0
+ 3.2.5
+ 1.7.5
+ 1.0.0.v20140518
7
2021-12-27T14:11:19Z
@@ -73,50 +75,71 @@ 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
+ ${slf4jVersion}
+ provided
-
org.apache.maven.shared
maven-artifact-transfer
0.13.1
-
commons-io
commons-io
- 2.5
+ 2.6
-
+
+ org.codehaus.plexus
+ plexus-utils
+ 3.3.1
+
+
+ org.eclipse.aether
+ aether-api
+ ${resolverVersion}
+
+
+ org.eclipse.aether
+ aether-util
+ ${resolverVersion}
+
+
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 +149,45 @@ under the License.
test
- org.mockito
- mockito-core
- 2.28.2
+ org.apache.maven
+ maven-aether-provider
+ ${mavenVersion}
test
- junit
- junit
- 4.13.1
+ org.eclipse.aether
+ aether-connector-basic
+ ${resolverVersion}
test
- org.sonatype.aether
- aether-connector-file
- 1.7
+ org.eclipse.aether
+ aether-transport-file
+ ${resolverVersion}
test
- org.slf4j
- slf4j-api
- 1.7.5
- provided
+ org.eclipse.aether
+ aether-transport-http
+ ${resolverVersion}
+ test
+
+
+ org.mockito
+ mockito-core
+ 2.28.2
+ test
+
+
+ junit
+ junit
+ 4.13.2
+ test
org.slf4j
slf4j-nop
- 1.7.5
+ ${slf4jVersion}
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/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..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
@@ -131,4 +131,16 @@ public boolean isBlacklisted()
{
return blacklisted;
}
+
+ // @Override
+ public boolean isBlocked()
+ {
+ return false;
+ }
+
+ // @Override
+ public void setBlocked( boolean b )
+ {
+
+ }
}