revelc/formatter-maven-plugin

Transitive dependency issue breaks formatter plugin

Closed this issue · 4 comments

Describe the bug
When running mvn formatter:format then I get the following error:

[ERROR] Failed to execute goal net.revelc.code.formatter:formatter-maven-plugin:2.7.5:format (default) on project cloudplatform-core: Execution default of goal net.revelc.code.formatter:formatter-maven-plugin:2.7.5:format failed: Pl
ugin net.revelc.code.formatter:formatter-maven-plugin:2.7.5 or one of its dependencies could not be resolved: Failed to collect dependencies at net.revelc.code.formatter:formatter-maven-plugin:jar:2.7.5 -> org.eclipse.jdt:org.eclips
e.jdt.core:jar:3.13.102 -> org.eclipse.platform:org.eclipse.core.resources:jar:3.12.0 -> org.eclipse.platform:org.eclipse.core.expressions:jar:3.5.100 -> org.eclipse.platform:org.eclipse.core.runtime:jar:3.12.0 -> org.eclipse.platfo
rm:org.eclipse.equinox.preferences:jar:3.10.0 -> org.osgi.service:org.osgi.service.prefs:jar:[1.1.0,1.2.0): No versions available for org.osgi.service:org.osgi.service.prefs:jar:[1.1.0,1.2.0) within specified rang

Versions (OS, Maven, Java, and others, as appropriate):

  • Affected version(s) of this project: 2.7.5 and later
  • OS: Windows / Linux / MaxOS
  • Others: Maven 3.6.3

To Reproduce

  1. Create Maven project, using Maven Central as repository
  2. Include formatter plugin version 2.7.5
  3. Run mvn formatter:format, see error.

Expected behavior
No Maven errors.

Observation
The transitive plugin dependency org.eclipse.platform:org.eclipse.equinox.preferences:jar:3.10.0 was published this morning. Its POM points to a non-existent dependency org.osgi.service:org.osgi.service.prefs:jar:[1.1.0,1.2.0) by mistake, I assume.

I think they made the mistake in their dependency section:

- org.osgi.service:org.osgi.service.prefs
+ org.osgi:org.osgi.service.prefs

However it breaks your plugin and our product pipeline.
Please help and/or provide a workaround, thanks!

To safe people the work of looking for the unbroken dependency that needs to be managed in:

<dependency>
    <groupId>org.eclipse.platform</groupId>
    <artifactId>org.eclipse.equinox.preferences</artifactId>
    <version>3.9.100</version>
</dependency>

Btw this does not affect 2.19.0 so you may consider upgrading.

<plugin>
    <groupId>net.revelc.code.formatter</groupId>
    <artifactId>formatter-maven-plugin</artifactId>
    <version>2.19.0</version>
</plugin>

Hi all, we are seeing the same issue in our project. I tried with adding

			<plugin>
				<groupId>net.revelc.code.formatter</groupId>
				<artifactId>formatter-maven-plugin</artifactId>
				<dependencies>
					<dependency>
					    <groupId>org.eclipse.platform</groupId>
					    <artifactId>org.eclipse.equinox.preferences</artifactId>
					    <version>3.9.100</version>
					</dependency>
				</dependencies>
			</plugin>

but doesn't seem to make a difference. I'm still getting error
[ERROR] Failed to execute goal net.revelc.code.formatter:formatter-maven-plugin:2.8.1:format (default-cli) on project matching: Execution default-cli of goal net.revelc.code.formatter:formatter-maven-plugin:2.8.1:format failed: Plugin net.revelc.code.formatter:formatter-maven-plugin:2.8.1 or one of its dependencies could not be resolved: Failed to collect dependencies at net.revelc.code.formatter:formatter-maven-plugin:jar:2.8.1 -> org.eclipse.jdt:org.eclipse.jdt.core:jar:3.15.0 -> org.eclipse.platform:org.eclipse.core.resources:jar:3.12.0 -> org.eclipse.platform:org.eclipse.core.expressions:jar:3.5.100 -> org.eclipse.platform:org.eclipse.core.runtime:jar:3.12.0 -> org.eclipse.platform:org.eclipse.equinox.preferences:jar:3.10.0 -> org.osgi.service:org.osgi.service.prefs:jar:[1.1.0,1.2.0): No versions available for org.osgi.service:org.osgi.service.prefs:jar:[1.1.0,1.2.0) within specified range -> [Help 1] Is this the correct way to do it?

For upgrading to 2.19.0, it doesn't work for our project as java.lang.UnsupportedClassVersionError: org/eclipse/text/edits/MalformedTreeException has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

Could you advise if I'm changing it correctly? Thanks in advance

This was fixed 3 years ago in 2.10.0 (#303). Relates to #301
Please upgrade to a newer version of this plugin to resolve the issue.
You don't have to use 2.19.0, the current latest (which requires Java 11. I think 2.18 also requires 11). Any version 2.10.0 or later should resolve this particular issue.