Skip to content

Commit 95825ad

Browse files
committed
fix: add java version property only to parent pom
1 parent ead663e commit 95825ad

File tree

2 files changed

+78
-4
lines changed

2 files changed

+78
-4
lines changed

src/main/java/org/openrewrite/java/migrate/maven/UpdateMavenProjectPropertyJavaVersion.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.util.Arrays;
3030
import java.util.List;
3131
import java.util.Map;
32+
import java.util.Optional;
3233
import java.util.stream.Collectors;
3334

3435
@Value
@@ -88,10 +89,7 @@ public Xml.Document visitDocument(Xml.Document document, ExecutionContext ctx) {
8889
Xml.Document d = super.visitDocument(document, ctx);
8990

9091
// Return early if the parent appears to be within the current repository, as properties defined there will be updated
91-
if (d.getRoot().getChild("parent")
92-
.flatMap(parent -> parent.getChild("relativePath"))
93-
.flatMap(Xml.Tag::getValue)
94-
.isPresent()) {
92+
if (isLocalParent(d)) {
9593
return d;
9694
}
9795

@@ -142,6 +140,20 @@ public Xml.Tag visitTag(Xml.Tag tag, ExecutionContext ctx) {
142140
}
143141
return t;
144142
}
143+
144+
private boolean isLocalParent(Xml.Document d) {
145+
Optional<Xml.Tag> relativePath = d.getRoot().getChild("parent")
146+
.flatMap(parent -> parent.getChild("relativePath"));
147+
if (relativePath.flatMap(Xml.Tag::getValue).isPresent()) {
148+
// specified explicitly: `<relativePath>../../pom.xml<relativePath>>`
149+
return true;
150+
} else {
151+
// no relative path, maven default is used, potentially `../pom.xml`
152+
// but parent exists, so not root `pom.xml`
153+
return !relativePath.isPresent() && getResolutionResult().getParent() != null;
154+
}
155+
156+
}
145157
};
146158
}
147159
}

src/test/java/org/openrewrite/java/migrate/maven/UpdateMavenProjectPropertyJavaVersionTest.java

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,68 @@ void overrideRemoteParent() {
194194
);
195195
}
196196

197+
@Test
198+
void doNotOverrideLocalParent() {
199+
rewriteRun(
200+
//language=xml
201+
pomXml(
202+
"""
203+
<project>
204+
<groupId>com.example</groupId>
205+
<artifactId>example-parent</artifactId>
206+
<version>1.0.0</version>
207+
<modelVersion>4.0</modelVersion>
208+
<properties>
209+
<java.version>11</java.version>
210+
<jdk.version>11</jdk.version>
211+
<javaVersion>11</javaVersion>
212+
<jdkVersion>11</jdkVersion>
213+
<maven.compiler.source>11</maven.compiler.source>
214+
<maven.compiler.target>11</maven.compiler.target>
215+
<maven.compiler.release>11</maven.compiler.release>
216+
<release.version>11</release.version>
217+
</properties>
218+
</project>
219+
""",
220+
"""
221+
<project>
222+
<groupId>com.example</groupId>
223+
<artifactId>example-parent</artifactId>
224+
<version>1.0.0</version>
225+
<modelVersion>4.0</modelVersion>
226+
<properties>
227+
<java.version>17</java.version>
228+
<jdk.version>17</jdk.version>
229+
<javaVersion>17</javaVersion>
230+
<jdkVersion>17</jdkVersion>
231+
<maven.compiler.source>17</maven.compiler.source>
232+
<maven.compiler.target>17</maven.compiler.target>
233+
<maven.compiler.release>17</maven.compiler.release>
234+
<release.version>17</release.version>
235+
</properties>
236+
</project>
237+
"""),
238+
mavenProject("example-child",
239+
//language=xml
240+
pomXml(
241+
"""
242+
<project>
243+
<parent>
244+
<groupId>com.example</groupId>
245+
<artifactId>example-parent</artifactId>
246+
<version>1.0.0</version>
247+
</parent>
248+
<groupId>com.example</groupId>
249+
<artifactId>example-child</artifactId>
250+
<version>1.0.0</version>
251+
<modelVersion>4.0</modelVersion>
252+
</project>
253+
"""
254+
)
255+
)
256+
);
257+
}
258+
197259
@Test
198260
void doNothingForExplicitPluginConfiguration() {
199261
// Use UseMavenCompilerPluginReleaseConfiguration for this case

0 commit comments

Comments
 (0)