diff --git a/rewrite-maven/src/main/java/org/openrewrite/maven/ChangeManagedDependencyGroupIdAndArtifactId.java b/rewrite-maven/src/main/java/org/openrewrite/maven/ChangeManagedDependencyGroupIdAndArtifactId.java index e8c3933ddd..ad6394e5aa 100644 --- a/rewrite-maven/src/main/java/org/openrewrite/maven/ChangeManagedDependencyGroupIdAndArtifactId.java +++ b/rewrite-maven/src/main/java/org/openrewrite/maven/ChangeManagedDependencyGroupIdAndArtifactId.java @@ -26,6 +26,7 @@ import org.openrewrite.maven.tree.ResolvedPom; import org.openrewrite.semver.Semver; import org.openrewrite.semver.VersionComparator; +import org.openrewrite.xml.AddToTagVisitor; import org.openrewrite.xml.RemoveContentVisitor; import org.openrewrite.xml.tree.Xml; @@ -160,6 +161,9 @@ public Xml.Tag visitTag(Xml.Tag tag, ExecutionContext ctx) { } String resolvedNewVersion = resolveSemverVersion(ctx, newGroupId, resolvedArtifactId, getResolutionResult().getPom().getValue(versionTag.get().getValue().orElse(null))); t = changeChildTagValue(t, "version", resolvedNewVersion, ctx); + } else { + Xml.Tag newChild = Xml.Tag.build("" + newVersion + ""); + t = (Xml.Tag) new AddToTagVisitor(t, newChild, new MavenTagInsertionComparator(t.getChildren())).visitNonNull(t, ctx, getCursor().getParentOrThrow()); } } catch (MavenDownloadingException e) { return e.warn(t); diff --git a/rewrite-maven/src/test/java/org/openrewrite/maven/ChangeDependencyGroupIdAndArtifactIdTest.java b/rewrite-maven/src/test/java/org/openrewrite/maven/ChangeDependencyGroupIdAndArtifactIdTest.java index 30f637ad96..0b82002828 100644 --- a/rewrite-maven/src/test/java/org/openrewrite/maven/ChangeDependencyGroupIdAndArtifactIdTest.java +++ b/rewrite-maven/src/test/java/org/openrewrite/maven/ChangeDependencyGroupIdAndArtifactIdTest.java @@ -567,6 +567,78 @@ void changeManagedDependencyGroupIdAndArtifactIdAndVersion() { ); } + @Test + void doesNotAddVersionNumberTagToDirectDependencyIfAbleToOnManagedDependency() { + rewriteRun( + spec -> spec.recipe( + new ChangeDependencyGroupIdAndArtifactId( + "com.fasterxml.jackson.core", + "jackson-core", + "org.apache.commons", + "commons-csv", + "1.14.1", + null + ) + ), + //language=xml + pomXml( + """ + + com.example + project + 1 + + com.fasterxml.jackson + jackson-bom + 2.20.0 + + + + + com.fasterxml.jackson.core + jackson-core + + + + + + com.fasterxml.jackson.core + jackson-core + + + + """, + """ + + com.example + project + 1 + + com.fasterxml.jackson + jackson-bom + 2.20.0 + + + + + org.apache.commons + commons-csv + 1.14.1 + + + + + + org.apache.commons + commons-csv + + + + """ + ) + ); + } + @Test void changeProfileManagedDependencyGroupIdAndArtifactId() { rewriteRun( diff --git a/rewrite-maven/src/test/java/org/openrewrite/maven/ChangeManagedDependencyGroupIdAndArtifactIdTest.java b/rewrite-maven/src/test/java/org/openrewrite/maven/ChangeManagedDependencyGroupIdAndArtifactIdTest.java index c0213793eb..6c5c6898f2 100644 --- a/rewrite-maven/src/test/java/org/openrewrite/maven/ChangeManagedDependencyGroupIdAndArtifactIdTest.java +++ b/rewrite-maven/src/test/java/org/openrewrite/maven/ChangeManagedDependencyGroupIdAndArtifactIdTest.java @@ -346,6 +346,78 @@ void changeManagedDependencyWithPropertyVersion() { ); } + @Test + void changeManagedDependencyMissingExplicitVersion() { + rewriteRun( + spec -> spec.recipe( + new ChangeManagedDependencyGroupIdAndArtifactId( + "com.fasterxml.jackson.core", + "jackson-core", + "org.apache.commons", + "commons-csv", + "1.14.1", + null + ) + ), + //language=xml + pomXml( + """ + + com.example + project + 1 + + com.fasterxml.jackson + jackson-bom + 2.20.0 + + + + + com.fasterxml.jackson.core + jackson-core + + + + + + com.fasterxml.jackson.core + jackson-core + + + + """, + """ + + com.example + project + 1 + + com.fasterxml.jackson + jackson-bom + 2.20.0 + + + + + org.apache.commons + commons-csv + 1.14.1 + + + + + + com.fasterxml.jackson.core + jackson-core + + + + """ + ) + ); + } + @Test void latestPatchMangedDependency() { rewriteRun(