Skip to content

Commit 6eb066e

Browse files
authored
[MDEPLOY-291] Update POM parent and Maven (#22)
Update plugin build: * update parent to 36 * update maven to 3.2.5 * leave the plugin to Java7 * warn user if older that Maven 3.9.0 is used to deploy a maven-plugin
1 parent 36a2030 commit 6eb066e

File tree

8 files changed

+136
-45
lines changed

8 files changed

+136
-45
lines changed

pom.xml

Lines changed: 62 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ under the License.
2525
<parent>
2626
<groupId>org.apache.maven.plugins</groupId>
2727
<artifactId>maven-plugins</artifactId>
28-
<version>34</version>
29-
<relativePath>../../pom/maven/maven-plugins/pom.xml</relativePath>
28+
<version>36</version>
29+
<relativePath/>
3030
</parent>
3131

3232
<artifactId>maven-deploy-plugin</artifactId>
@@ -63,7 +63,9 @@ under the License.
6363
</distributionManagement>
6464

6565
<properties>
66-
<mavenVersion>3.0</mavenVersion>
66+
<mavenVersion>3.2.5</mavenVersion>
67+
<slf4jVersion>1.7.5</slf4jVersion> <!-- Keep in sync with resolver used in maven above -->
68+
<resolverVersion>1.0.0.v20140518</resolverVersion> <!-- Keep in sync with resolver used in maven above -->
6769
<javaVersion>7</javaVersion>
6870
<project.build.outputTimestamp>2021-12-27T14:11:19Z</project.build.outputTimestamp>
6971
</properties>
@@ -73,50 +75,71 @@ under the License.
7375
<groupId>org.apache.maven</groupId>
7476
<artifactId>maven-plugin-api</artifactId>
7577
<version>${mavenVersion}</version>
78+
<scope>provided</scope>
7679
</dependency>
7780
<dependency>
7881
<groupId>org.apache.maven</groupId>
7982
<artifactId>maven-core</artifactId>
8083
<version>${mavenVersion}</version>
84+
<scope>provided</scope>
8185
</dependency>
8286
<dependency>
8387
<groupId>org.apache.maven</groupId>
8488
<artifactId>maven-model</artifactId>
8589
<version>${mavenVersion}</version>
90+
<scope>provided</scope>
8691
</dependency>
8792
<dependency>
8893
<groupId>org.apache.maven</groupId>
8994
<artifactId>maven-artifact</artifactId>
9095
<version>${mavenVersion}</version>
96+
<scope>provided</scope>
97+
</dependency>
98+
99+
<dependency>
100+
<groupId>org.slf4j</groupId>
101+
<artifactId>slf4j-api</artifactId>
102+
<version>${slf4jVersion}</version>
103+
<scope>provided</scope>
91104
</dependency>
92-
93105
<dependency>
94106
<groupId>org.apache.maven.shared</groupId>
95107
<artifactId>maven-artifact-transfer</artifactId>
96108
<version>0.13.1</version>
97109
</dependency>
98-
<!-- Upgrade of transitive dependency. -->
99110
<dependency>
100111
<groupId>commons-io</groupId>
101112
<artifactId>commons-io</artifactId>
102-
<version>2.5</version>
113+
<version>2.6</version>
103114
</dependency>
104-
115+
<dependency>
116+
<groupId>org.codehaus.plexus</groupId>
117+
<artifactId>plexus-utils</artifactId>
118+
<version>3.3.1</version>
119+
</dependency>
120+
<dependency>
121+
<groupId>org.eclipse.aether</groupId>
122+
<artifactId>aether-api</artifactId>
123+
<version>${resolverVersion}</version>
124+
</dependency>
125+
<dependency>
126+
<groupId>org.eclipse.aether</groupId>
127+
<artifactId>aether-util</artifactId>
128+
<version>${resolverVersion}</version>
129+
</dependency>
130+
105131
<!-- dependencies to annotations -->
106132
<dependency>
107133
<groupId>org.apache.maven.plugin-tools</groupId>
108134
<artifactId>maven-plugin-annotations</artifactId>
109135
<scope>provided</scope>
110136
</dependency>
111-
<dependency>
112-
<groupId>org.codehaus.plexus</groupId>
113-
<artifactId>plexus-utils</artifactId>
114-
<version>3.2.0</version>
115-
</dependency>
137+
138+
<!-- Test -->
116139
<dependency>
117140
<groupId>org.apache.maven.plugin-testing</groupId>
118141
<artifactId>maven-plugin-testing-harness</artifactId>
119-
<version>2.1</version>
142+
<version>3.3.0</version>
120143
<scope>test</scope>
121144
</dependency>
122145
<dependency> <!-- used by maven-plugin-testing-harness, don't give it compile scope! -->
@@ -126,33 +149,45 @@ under the License.
126149
<scope>test</scope>
127150
</dependency>
128151
<dependency>
129-
<groupId>org.mockito</groupId>
130-
<artifactId>mockito-core</artifactId>
131-
<version>2.28.2</version>
152+
<groupId>org.apache.maven</groupId>
153+
<artifactId>maven-aether-provider</artifactId>
154+
<version>${mavenVersion}</version>
132155
<scope>test</scope>
133156
</dependency>
134157
<dependency>
135-
<groupId>junit</groupId>
136-
<artifactId>junit</artifactId>
137-
<version>4.13.1</version>
158+
<groupId>org.eclipse.aether</groupId>
159+
<artifactId>aether-connector-basic</artifactId>
160+
<version>${resolverVersion}</version>
138161
<scope>test</scope>
139162
</dependency>
140163
<dependency>
141-
<groupId>org.sonatype.aether</groupId>
142-
<artifactId>aether-connector-file</artifactId>
143-
<version>1.7</version>
164+
<groupId>org.eclipse.aether</groupId>
165+
<artifactId>aether-transport-file</artifactId>
166+
<version>${resolverVersion}</version>
144167
<scope>test</scope>
145168
</dependency>
146169
<dependency>
147-
<groupId>org.slf4j</groupId>
148-
<artifactId>slf4j-api</artifactId>
149-
<version>1.7.5</version>
150-
<scope>provided</scope>
170+
<groupId>org.eclipse.aether</groupId>
171+
<artifactId>aether-transport-http</artifactId>
172+
<version>${resolverVersion}</version>
173+
<scope>test</scope>
174+
</dependency>
175+
<dependency>
176+
<groupId>org.mockito</groupId>
177+
<artifactId>mockito-core</artifactId>
178+
<version>2.28.2</version>
179+
<scope>test</scope>
180+
</dependency>
181+
<dependency>
182+
<groupId>junit</groupId>
183+
<artifactId>junit</artifactId>
184+
<version>4.13.2</version>
185+
<scope>test</scope>
151186
</dependency>
152187
<dependency>
153188
<groupId>org.slf4j</groupId>
154189
<artifactId>slf4j-nop</artifactId>
155-
<version>1.7.5</version>
190+
<version>${slf4jVersion}</version>
156191
<scope>test</scope>
157192
</dependency>
158193

src/main/java/org/apache/maven/plugins/deploy/AbstractDeployMojo.java

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,12 @@
2626
import org.apache.maven.execution.MavenSession;
2727
import org.apache.maven.plugin.AbstractMojo;
2828
import org.apache.maven.plugin.MojoFailureException;
29+
import org.apache.maven.plugins.annotations.Component;
2930
import org.apache.maven.plugins.annotations.Parameter;
31+
import org.apache.maven.rtinfo.RuntimeInformation;
32+
import org.eclipse.aether.util.version.GenericVersionScheme;
33+
import org.eclipse.aether.version.InvalidVersionSpecificationException;
34+
import org.eclipse.aether.version.Version;
3035

3136
/**
3237
* Abstract class for Deploy mojo's.
@@ -52,7 +57,14 @@ public abstract class AbstractDeployMojo
5257

5358
@Parameter( defaultValue = "${session}", readonly = true, required = true )
5459
private MavenSession session;
55-
60+
61+
@Component
62+
private RuntimeInformation runtimeInformation;
63+
64+
private static final String AFFECTED_MAVEN_PACKAGING = "maven-plugin";
65+
66+
private static final String FIXED_MAVEN_VERSION = "3.9.0";
67+
5668
/* Setters and Getters */
5769

5870
void failIfOffline()
@@ -79,4 +91,29 @@ protected final MavenSession getSession()
7991
{
8092
return session;
8193
}
94+
95+
protected void warnIfAffectedPackagingAndMaven( final String packaging )
96+
{
97+
if ( AFFECTED_MAVEN_PACKAGING.equals( packaging ) )
98+
{
99+
try
100+
{
101+
GenericVersionScheme versionScheme = new GenericVersionScheme();
102+
Version fixedMavenVersion = versionScheme.parseVersion( FIXED_MAVEN_VERSION );
103+
Version currentMavenVersion = versionScheme.parseVersion( runtimeInformation.getMavenVersion() );
104+
if ( fixedMavenVersion.compareTo( currentMavenVersion ) > 0 )
105+
{
106+
getLog().warn( "" );
107+
getLog().warn( "You are about to deploy a maven-plugin using Maven " + currentMavenVersion + "." );
108+
getLog().warn( "This plugin should be used ONLY with Maven 3.9.0 and newer, as MNG-7055" );
109+
getLog().warn( "is fixed in those versions of Maven only!" );
110+
getLog().warn( "" );
111+
}
112+
}
113+
catch ( InvalidVersionSpecificationException e )
114+
{
115+
// skip it: Generic does not throw, only API contains this exception
116+
}
117+
}
118+
}
82119
}

src/main/java/org/apache/maven/plugins/deploy/DeployFileMojo.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,7 @@ public void execute()
481481

482482
try
483483
{
484+
warnIfAffectedPackagingAndMaven( packaging );
484485
artifactDeployer.deploy( getSession().getProjectBuildingRequest(), deploymentRepository,
485486
deployableArtifacts );
486487
}

src/main/java/org/apache/maven/plugins/deploy/DeployMojo.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ private void deployProject( ProjectBuildingRequest pbr, ProjectDeployerRequest p
207207
{
208208
try
209209
{
210+
warnIfAffectedPackagingAndMaven( pir.getProject().getPackaging() );
210211
projectDeployer.deploy( pbr, pir, repo );
211212
}
212213
catch ( NoFileAssignedException e )

src/test/java/org/apache/maven/plugins/deploy/DeployFileMojoTest.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,12 @@
3030
import org.apache.maven.model.Model;
3131
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
3232
import org.apache.maven.project.ProjectBuildingRequest;
33-
import org.apache.maven.repository.internal.MavenRepositorySystemSession;
33+
import org.eclipse.aether.DefaultRepositorySystemSession;
34+
import org.eclipse.aether.repository.LocalRepository;
3435
import org.mockito.InjectMocks;
3536
import org.mockito.Mock;
3637
import org.mockito.MockitoAnnotations;
37-
import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
38+
import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
3839

3940
/**
4041
* @author <a href="mailto:aramirez@apache.org">Allan Ramirez</a>
@@ -91,9 +92,10 @@ public void testBasicDeployFile()
9192
assertNotNull( mojo );
9293

9394
ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class );
95+
when( buildingRequest.getRepositoryMerging() ).thenReturn( ProjectBuildingRequest.RepositoryMerging.POM_DOMINANT );
9496
when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest );
95-
MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession();
96-
repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( LOCAL_REPO ) );
97+
DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession();
98+
repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repositorySession, new LocalRepository( LOCAL_REPO ) ) );
9799
when( buildingRequest.getRepositorySession() ).thenReturn( repositorySession );
98100

99101
String groupId = (String) getVariableValueFromObject( mojo, "groupId" );
@@ -192,9 +194,10 @@ public void testDeployIfClassifierIsSet()
192194
assertNotNull( mojo );
193195

194196
ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class );
197+
when( buildingRequest.getRepositoryMerging() ).thenReturn( ProjectBuildingRequest.RepositoryMerging.POM_DOMINANT );
195198
when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest );
196-
MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession();
197-
repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( LOCAL_REPO ) );
199+
DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession();
200+
repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repositorySession, new LocalRepository( LOCAL_REPO ) ) );
198201
when( buildingRequest.getRepositorySession() ).thenReturn( repositorySession );
199202

200203
String classifier = ( String ) getVariableValueFromObject( mojo, "classifier" );
@@ -240,9 +243,10 @@ public void testDeployIfArtifactIsNotJar()
240243
assertNotNull( mojo );
241244

242245
ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class );
246+
when( buildingRequest.getRepositoryMerging() ).thenReturn( ProjectBuildingRequest.RepositoryMerging.POM_DOMINANT );
243247
when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest );
244-
MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession();
245-
repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( LOCAL_REPO ) );
248+
DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession();
249+
repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repositorySession, new LocalRepository( LOCAL_REPO ) ) );
246250
when( buildingRequest.getRepositorySession() ).thenReturn( repositorySession );
247251

248252
String groupId = (String) getVariableValueFromObject( mojo, "groupId" );

src/test/java/org/apache/maven/plugins/deploy/DeployMojoTest.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,15 @@
4040
import org.apache.maven.plugins.deploy.stubs.DeployArtifactStub;
4141
import org.apache.maven.project.MavenProject;
4242
import org.apache.maven.project.ProjectBuildingRequest;
43-
import org.apache.maven.repository.internal.MavenRepositorySystemSession;
4443
import org.apache.maven.shared.transfer.project.deploy.ProjectDeployerRequest;
4544
import org.codehaus.plexus.util.FileUtils;
45+
import org.eclipse.aether.DefaultRepositorySystemSession;
46+
import org.eclipse.aether.repository.LocalRepository;
4647
import org.junit.Ignore;
4748
import org.mockito.InjectMocks;
4849
import org.mockito.Mock;
4950
import org.mockito.MockitoAnnotations;
50-
import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
51+
import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
5152

5253
/**
5354
* @author <a href="mailto:aramirez@apache.org">Allan Ramirez</a>
@@ -132,8 +133,8 @@ public void testBasicDeploy()
132133

133134
ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class );
134135
when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest );
135-
MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession();
136-
repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( LOCAL_REPO ) );
136+
DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession();
137+
repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repositorySession, new LocalRepository( LOCAL_REPO ) ) );
137138
when( buildingRequest.getRepositorySession() ).thenReturn( repositorySession );
138139

139140
File file = new File( getBasedir(),
@@ -303,8 +304,8 @@ public void testBasicDeployWithPackagingAsPom()
303304

304305
ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class );
305306
when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest );
306-
MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession();
307-
repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( LOCAL_REPO ) );
307+
DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession();
308+
repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repositorySession, new LocalRepository( LOCAL_REPO ) ) );
308309
when( buildingRequest.getRepositorySession() ).thenReturn( repositorySession );
309310

310311
File pomFile = new File( getBasedir(),
@@ -415,8 +416,8 @@ public void testDeployWithAttachedArtifacts()
415416

416417
ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class );
417418
when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest );
418-
MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession();
419-
repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( LOCAL_REPO ) );
419+
DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession();
420+
repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repositorySession, new LocalRepository( LOCAL_REPO ) ) );
420421
when( buildingRequest.getRepositorySession() ).thenReturn( repositorySession );
421422

422423
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "project" );

src/test/java/org/apache/maven/plugins/deploy/Utils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import java.util.Map;
2727

2828
import org.apache.maven.plugin.MojoExecutionException;
29-
import org.sonatype.aether.util.ChecksumUtils;
29+
import org.eclipse.aether.util.ChecksumUtils;
3030

3131
/**
3232
* A utility class to assist testing.

src/test/java/org/apache/maven/plugins/deploy/stubs/ArtifactRepositoryStub.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,4 +131,16 @@ public boolean isBlacklisted()
131131
{
132132
return blacklisted;
133133
}
134+
135+
// @Override
136+
public boolean isBlocked()
137+
{
138+
return false;
139+
}
140+
141+
// @Override
142+
public void setBlocked( boolean b )
143+
{
144+
145+
}
134146
}

0 commit comments

Comments
 (0)