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(