diff --git a/src/main/resources/META-INF/rewrite/java-version-11.yml b/src/main/resources/META-INF/rewrite/java-version-11.yml
index 260721fdcf..bea9f2d558 100644
--- a/src/main/resources/META-INF/rewrite/java-version-11.yml
+++ b/src/main/resources/META-INF/rewrite/java-version-11.yml
@@ -110,6 +110,7 @@ recipeList:
groupId: org.apache.maven.plugins
artifactId: maven-compiler-plugin
newVersion: 3.6.2
+ addVersionIfMissing: true
- org.openrewrite.github.SetupJavaUpgradeJavaVersion:
minimumJavaMajorVersion: 11
- org.openrewrite.maven.UpgradePluginVersion:
diff --git a/src/main/resources/META-INF/rewrite/java-version-17.yml b/src/main/resources/META-INF/rewrite/java-version-17.yml
index c4803782ef..45d5baa447 100644
--- a/src/main/resources/META-INF/rewrite/java-version-17.yml
+++ b/src/main/resources/META-INF/rewrite/java-version-17.yml
@@ -110,6 +110,7 @@ recipeList:
groupId: org.apache.maven.plugins
artifactId: maven-compiler-plugin
newVersion: 3.x
+ addVersionIfMissing: true
- org.openrewrite.maven.UpgradePluginVersion:
groupId: org.apache.maven.plugins
artifactId: maven-war-plugin
diff --git a/src/main/resources/META-INF/rewrite/java-version-25.yml b/src/main/resources/META-INF/rewrite/java-version-25.yml
index c0cb0d3925..77b9c310a8 100644
--- a/src/main/resources/META-INF/rewrite/java-version-25.yml
+++ b/src/main/resources/META-INF/rewrite/java-version-25.yml
@@ -207,6 +207,7 @@ recipeList:
groupId: org.apache.maven.plugins
artifactId: maven-compiler-plugin
newVersion: 3.15.x
+ addVersionIfMissing: true
- org.openrewrite.maven.UpgradePluginVersion:
groupId: org.apache.maven.plugins
artifactId: maven-surefire-plugin
diff --git a/src/test/java/org/openrewrite/java/migrate/Java8toJava11Test.java b/src/test/java/org/openrewrite/java/migrate/Java8toJava11Test.java
index db2594f6da..641e1d0fdd 100644
--- a/src/test/java/org/openrewrite/java/migrate/Java8toJava11Test.java
+++ b/src/test/java/org/openrewrite/java/migrate/Java8toJava11Test.java
@@ -70,6 +70,86 @@ void needToJaxb2MavenPlugin() {
);
}
+ @Test
+ void compilerPluginVersionAddedWhenMissing() {
+ rewriteRun(
+ version(
+ mavenProject("project",
+ //language=xml
+ pomXml(
+ """
+
+ com.mycompany.app
+ my-app
+ 1
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.5
+ 1.5
+
+
+
+
+
+ """,
+ spec -> spec.after(pomXml -> {
+ assertThat(pomXml).contains("3.");
+ return pomXml;
+ })
+ )
+ ),
+ 8)
+ );
+ }
+
+ @Test
+ void compilerPluginVersionAddedAndReleaseSetForFullMigration() {
+ rewriteRun(
+ spec -> spec.recipe(Environment.builder()
+ .scanRuntimeClasspath("org.openrewrite.java.migrate")
+ .build()
+ .activateRecipes("org.openrewrite.java.migrate.Java8toJava11")),
+ version(
+ mavenProject("project",
+ //language=xml
+ pomXml(
+ """
+
+ com.mycompany.app
+ my-app
+ 1
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.5
+ 1.5
+
+
+
+
+
+ """,
+ spec -> spec.after(pomXml -> {
+ assertThat(pomXml)
+ .contains("11")
+ .contains("3.")
+ .doesNotContain("")
+ .doesNotContain("");
+ return pomXml;
+ })
+ )
+ ),
+ 8)
+ );
+ }
+
@Test
void noChangeOnCorrectJaxb2MavenPluginVersion() {
rewriteRun(