openrewrite / rewrite-migrate-java

OpenRewrite recipes for migrating to newer versions of Java.
Apache License 2.0
102 stars 71 forks source link

version 1.17.1 tries to change a lot of unreleated files #184

Open BigMichi1 opened 1 year ago

BigMichi1 commented 1 year ago

after upgrading from version 1.17.0 to 1.17.1 a lot of files will be changed by the plugin which are from my pov unrelated to the migration

output from 1.17.0 when running ./mvnw rewrite:run

[INFO] --- rewrite:4.40.0:run (validate) @ parent ---
Downloading from central: https://repo.maven.apache.org/maven2/org/openrewrite/recipe/rewrite-migrate-java/1.17.0/rewrite-migrate-java-1.17.0.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/openrewrite/recipe/rewrite-migrate-java/1.17.0/rewrite-migrate-java-1.17.0.jar (212 kB at 620 kB/s)
[INFO] Using active recipe(s) [org.openrewrite.java.migrate.UpgradeToJava17, org.openrewrite.java.testing.junit5.JUnit5BestPractices, org.openrewrite.java.cleanup.Cleanup]
[INFO] Using active styles(s) []
[INFO] Validating active recipes...
[INFO] Project [Parent POM to manage all plugin versions] Resolving Poms...
[INFO] Project [Parent POM to manage all plugin versions] Parsing Source Files
[INFO] Running recipe(s)...
[INFO] 

output from 1.17.1 when running ./mvnw rewrite:run

[INFO] --- rewrite:4.40.0:run (validate) @ parent ---
Downloading from central: https://repo.maven.apache.org/maven2/org/openrewrite/recipe/rewrite-migrate-java/1.17.1/rewrite-migrate-java-1.17.1.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/openrewrite/recipe/rewrite-migrate-java/1.17.1/rewrite-migrate-java-1.17.1.pom (5.8 kB at 19 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/openrewrite/recipe/rewrite-migrate-java/1.17.1/rewrite-migrate-java-1.17.1.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/openrewrite/recipe/rewrite-migrate-java/1.17.1/rewrite-migrate-java-1.17.1.jar (213 kB at 2.4 MB/s)
[INFO] Using active recipe(s) [org.openrewrite.java.migrate.UpgradeToJava17, org.openrewrite.java.testing.junit5.JUnit5BestPractices, org.openrewrite.java.cleanup.Cleanup]
[INFO] Using active styles(s) []
[INFO] Validating active recipes...
[INFO] Project [Parent POM to manage all plugin versions] Resolving Poms...
[INFO] Project [Parent POM to manage all plugin versions] Parsing Source Files
[INFO] Running recipe(s)...
[WARNING] Changes have been made to pom.xml by:
[WARNING]     org.openrewrite.java.migrate.UpgradeToJava17
[WARNING]         org.openrewrite.java.migrate.Java8toJava11
[WARNING]             org.openrewrite.java.migrate.JavaVersion11
[WARNING]                 org.openrewrite.java.migrate.UpgradeJavaVersion: {version=11}
[WARNING] Changes have been made to renovate.json by:
[WARNING]     org.openrewrite.java.migrate.UpgradeToJava17
[WARNING]         org.openrewrite.java.migrate.Java8toJava11
[WARNING]             org.openrewrite.java.migrate.JavaVersion11
[WARNING]                 org.openrewrite.java.migrate.UpgradeJavaVersion: {version=11}
[WARNING] Changes have been made to .mvn/settings.xml by:
[WARNING]     org.openrewrite.java.migrate.UpgradeToJava17
[WARNING]         org.openrewrite.java.migrate.Java8toJava11
[WARNING]             org.openrewrite.java.migrate.JavaVersion11
[WARNING]                 org.openrewrite.java.migrate.UpgradeJavaVersion: {version=11}
[WARNING] Changes have been made to .gitlab-ci.yml by:
[WARNING]     org.openrewrite.java.migrate.UpgradeToJava17
[WARNING]         org.openrewrite.java.migrate.Java8toJava11
[WARNING]             org.openrewrite.java.migrate.JavaVersion11
[WARNING]                 org.openrewrite.java.migrate.UpgradeJavaVersion: {version=11}
[WARNING] Changes have been made to .mvn/wrapper/maven-wrapper.properties by:
[WARNING]     org.openrewrite.java.migrate.UpgradeToJava17
[WARNING]         org.openrewrite.java.migrate.Java8toJava11
[WARNING]             org.openrewrite.java.migrate.JavaVersion11
[WARNING]                 org.openrewrite.java.migrate.UpgradeJavaVersion: {version=11}
[WARNING] Changes have been made to .gitattributes by:
[WARNING]     org.openrewrite.java.migrate.UpgradeToJava17
[WARNING]         org.openrewrite.java.migrate.Java8toJava11
[WARNING]             org.openrewrite.java.migrate.JavaVersion11
[WARNING]                 org.openrewrite.java.migrate.UpgradeJavaVersion: {version=11}
[WARNING] Changes have been made to .gitignore by:
[WARNING]     org.openrewrite.java.migrate.UpgradeToJava17
[WARNING]         org.openrewrite.java.migrate.Java8toJava11
[WARNING]             org.openrewrite.java.migrate.JavaVersion11
[WARNING]                 org.openrewrite.java.migrate.UpgradeJavaVersion: {version=11}
[WARNING] Changes have been made to mvnw by:
[WARNING]     org.openrewrite.java.migrate.UpgradeToJava17
[WARNING]         org.openrewrite.java.migrate.Java8toJava11
[WARNING]             org.openrewrite.java.migrate.JavaVersion11
[WARNING]                 org.openrewrite.java.migrate.UpgradeJavaVersion: {version=11}
[WARNING] Changes have been made to mvnw.cmd by:
[WARNING]     org.openrewrite.java.migrate.UpgradeToJava17
[WARNING]         org.openrewrite.java.migrate.Java8toJava11
[WARNING]             org.openrewrite.java.migrate.JavaVersion11
[WARNING]                 org.openrewrite.java.migrate.UpgradeJavaVersion: {version=11}
[WARNING] Changes have been made to .mvn/wrapper/maven-wrapper.jar by:
[WARNING]     org.openrewrite.java.migrate.UpgradeToJava17
[WARNING]         org.openrewrite.java.migrate.Java8toJava11
[WARNING]             org.openrewrite.java.migrate.JavaVersion11
[WARNING]                 org.openrewrite.java.migrate.UpgradeJavaVersion: {version=11}
[WARNING] Changes have been made to README.md by:
[WARNING]     org.openrewrite.java.migrate.UpgradeToJava17
[WARNING]         org.openrewrite.java.migrate.Java8toJava11
[WARNING]             org.openrewrite.java.migrate.JavaVersion11
[WARNING]                 org.openrewrite.java.migrate.UpgradeJavaVersion: {version=11}
[WARNING] Please review and commit the results.
timtebeek commented 1 year ago

Hi @BigMichi1 ; Looks like you're affected by this recent change to add JavaVersion markers in UpgradeJavaVersion. I believe those markers are used further down to determine what other recipes can be applied, as the Migrate to Java 17 recipe includes a few more recipes.

From your issue statement it's not immediately clear to me if there's an immediate problem, or merely more output that you'd like to suppress. Would your problem be solved if we suppress those marker-only changes in the OpenRewrite Maven plugin for instance?

BigMichi1 commented 1 year ago

ah sry last part of the message got somehow lost

[WARNING] Please review and commit the results.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  46.120 s
[INFO] Finished at: 2023-02-27T14:11:04Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.openrewrite.maven:rewrite-maven-plugin:4.40.0:run (validate) on project parent: Execution validate of goal org.openrewrite.maven:rewrite-maven-plugin:4.40.0:run failed: The contents of a quark are unknown, so the charset is unknown. -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.openrewrite.maven:rewrite-maven-plugin:4.40.0:run (validate) on project parent: Execution validate of goal org.openrewrite.maven:rewrite-maven-plugin:4.40.0:run failed: The contents of a quark are unknown, so the charset is unknown.
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:347)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:330)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175)
    at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76)
    at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163)
    at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
    at java.lang.reflect.Method.invoke (Method.java:578)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
    at java.lang.reflect.Method.invoke (Method.java:578)
    at org.apache.maven.wrapper.BootstrapMainStarter.start (BootstrapMainStarter.java:53)
    at org.apache.maven.wrapper.WrapperExecutor.execute (WrapperExecutor.java:152)
    at org.apache.maven.wrapper.MavenWrapperMain.main (MavenWrapperMain.java:76)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution validate of goal org.openrewrite.maven:rewrite-maven-plugin:4.40.0:run failed: The contents of a quark are unknown, so the charset is unknown.
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:133)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:342)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:330)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175)
    at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76)
    at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163)
    at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
    at java.lang.reflect.Method.invoke (Method.java:578)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
    at java.lang.reflect.Method.invoke (Method.java:578)
    at org.apache.maven.wrapper.BootstrapMainStarter.start (BootstrapMainStarter.java:53)
    at org.apache.maven.wrapper.WrapperExecutor.execute (WrapperExecutor.java:152)
    at org.apache.maven.wrapper.MavenWrapperMain.main (MavenWrapperMain.java:76)
Caused by: java.lang.UnsupportedOperationException: The contents of a quark are unknown, so the charset is unknown.
    at org.openrewrite.quark.Quark.getCharset (Quark.java:55)
    at org.openrewrite.maven.AbstractRewriteRunMojo.writeAfter (AbstractRewriteRunMojo.java:173)
    at org.openrewrite.maven.AbstractRewriteRunMojo.execute (AbstractRewriteRunMojo.java:138)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:342)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:330)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175)
    at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76)
    at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163)
    at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
    at java.lang.reflect.Method.invoke (Method.java:578)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
    at java.lang.reflect.Method.invoke (Method.java:578)
    at org.apache.maven.wrapper.BootstrapMainStarter.start (BootstrapMainStarter.java:53)
    at org.apache.maven.wrapper.WrapperExecutor.execute (WrapperExecutor.java:152)
    at org.apache.maven.wrapper.MavenWrapperMain.main (MavenWrapperMain.java:76)
[ERROR] 
[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/PluginExecutionException
BigMichi1 commented 1 year ago

this is the missing part, currently the build fails when using 1.17.1

timtebeek commented 1 year ago

Ah that's unfortunate, thanks for that additional detail! Is there any hint just before the stacktrace what file it's unable to get the charset for? It's parsed as a quark, so likely a binary. We've seen a similar issue recently that was related to JKS files for instance.

BigMichi1 commented 1 year ago

i uploaded the project here https://github.com/BigMichi1/openrewrite, there in the actions that failed you can find the full output

i guess it is because there is a change detected in a jar file

[WARNING] Changes have been made to .mvn/wrapper/maven-wrapper.jar by:
[WARNING]     org.openrewrite.java.migrate.UpgradeToJava17
[WARNING]         org.openrewrite.java.migrate.Java8toJava11
[WARNING]             org.openrewrite.java.migrate.JavaVersion11
[WARNING]                 org.openrewrite.java.migrate.UpgradeJavaVersion: {version=11}
timtebeek commented 1 year ago

Thanks for the detailed report and reproduction project. Apologies this broke, will see about having this fixed!