Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UnsupportedOperationException when promoting master - Maven 3.6.0 Compatibility #104

Closed
jddipqd opened this issue Dec 31, 2018 · 2 comments

Comments

@jddipqd
Copy link

jddipqd commented Dec 31, 2018

When executing a deploy goal on master branch, the promote-master goal throws an exception:

$ mvn clean deploy
[INFO] Scanning for projects...
[INFO] GitBranchInfo: [name='master', type='MASTER', pattern='(origin/)?master']
[INFO] gitflow-helper-maven-plugin: Enabling MasterPromoteExtension. GIT_BRANCH: [master] matches masterBranchPattern: [(origin/)?master]
[ERROR] Internal error: java.lang.UnsupportedOperationException -> [Help 1]
org.apache.maven.InternalErrorException: Internal error: java.lang.UnsupportedOperationException
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:120)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: java.lang.UnsupportedOperationException
    at java.util.Collections$UnmodifiableCollection.removeAll (Collections.java:1068)
    at com.e_gineering.maven.gitflowhelper.MasterPromoteExtension.afterProjectsRead (MasterPromoteExtension.java:192)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:264)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/InternalErrorException

Plugin configuration:

<plugin>
	<groupId>com.e-gineering</groupId>
	<artifactId>gitflow-helper-maven-plugin</artifactId>
	<version>2.1.1</version>
	<configuration>
		<releaseDeploymentRepository>...</releaseDeploymentRepository>
		<stageDeploymentRepository>...</stageDeploymentRepository>
		<snapshotDeploymentRepository>...</snapshotDeploymentRepository>
	</configuration>
	<extensions>true</extensions>
	<executions>
		<execution>
			<goals>
				<goal>enforce-versions</goal>
				<goal>retarget-deploy</goal>
				<goal>tag-master</goal>
				<goal>promote-master</goal>
			</goals>
		</execution>
	</executions>
</plugin>

Maven version:

mvn -version
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T20:41:47+02:00)
Java version: 1.8.0_191, vendor: Oracle Corporation
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
@bvarner
Copy link
Contributor

bvarner commented Jan 2, 2019

Gah! Looks like maven finally figured out they should make internal collections unable to be modified.

@bvarner bvarner changed the title UnsupportedOperationException when promoting master UnsupportedOperationException when promoting master - Maven 3.6.0 Compatibility Jan 2, 2019
@glimmerveen
Copy link
Contributor

I experienced the same issue when using gitflow-helper-maven-plugin with Maven 3.6.0. It appears that since Maven 3.6.0 previously mutable collections (e.g. list of BuildPlugins of a MavenProject) are now returning immutable collection upon calling MavenProject.getBuildPlugins(). (see also https://github.com/apache/maven/blob/44826ab446d1115d464e73e7e308df36dcf7d39b/maven-core/src/main/java/org/apache/maven/project/MavenProject.java#L781).

A quick fix could be to obtain the 'BuildPlugin' list directly from the Model (MavenProject.getModel().getBuild().getPlugins()), rather then via the 'convenience' method MavenProject.getBuildPlugins. There is however a comment in the code suggesting that the MavenProject.getModel() could be removed in the future (https://github.com/apache/maven/blob/44826ab446d1115d464e73e7e308df36dcf7d39b/maven-core/src/main/java/org/apache/maven/project/MavenProject.java#L224), so this path could potentially break (again).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants