From c63cfae1e805dc620b11cf35facf72c34b984733 Mon Sep 17 00:00:00 2001 From: Tomas Hofman Date: Tue, 9 Jul 2024 13:47:01 +0200 Subject: [PATCH] By default rewrite versions in the version elements, instead of overriding properties --- .../it/UpgradeComponentsMojoIT.java | 31 ++++++ .../inline_override_test_case/manifest.yaml | 12 +++ .../inline_override_test_case/pom.xml | 71 ++++++++++++++ .../channelplugin/UpgradeComponentsMojo.java | 97 +++++++++---------- .../manipulation/PomManipulator.java | 79 ++++++++++++++- .../MojoConfiguratorTestCase.java | 6 +- .../manipulation/PomManipulatorTestCase.java | 20 ++++ .../channelplugin/manipulation/pom.xml | 4 +- pom.xml | 2 +- 9 files changed, 265 insertions(+), 57 deletions(-) create mode 100644 integration-tests/src/test/resources-its/org/wildfly/channelplugin/it/UpgradeComponentsMojoIT/inline_override_test_case/manifest.yaml create mode 100644 integration-tests/src/test/resources-its/org/wildfly/channelplugin/it/UpgradeComponentsMojoIT/inline_override_test_case/pom.xml diff --git a/integration-tests/src/test/java/org/wildfly/channelplugin/it/UpgradeComponentsMojoIT.java b/integration-tests/src/test/java/org/wildfly/channelplugin/it/UpgradeComponentsMojoIT.java index 68ff9c9..e708b0b 100644 --- a/integration-tests/src/test/java/org/wildfly/channelplugin/it/UpgradeComponentsMojoIT.java +++ b/integration-tests/src/test/java/org/wildfly/channelplugin/it/UpgradeComponentsMojoIT.java @@ -37,6 +37,7 @@ public class UpgradeComponentsMojoIT { @SystemProperty(value = "localRepository", content = "${maven.repo.local}") @SystemProperty(value = "remoteRepositories", content = "file://${maven.repo.local}") @SystemProperty(value = "ignoreStreams", content = "org.jboss:ignored-dep") + @SystemProperty(value = "inlineUpgradedVersions", content = "false") @MavenTest void basic_project_test_case(MavenExecutionResult result) { assertThat(result).isSuccessful(); @@ -93,6 +94,7 @@ void basic_project_test_case(MavenExecutionResult result) { */ @MavenGoal("${project.groupId}:wildfly-channel-maven-plugin:${project.version}:upgrade") @SystemProperty(value = "manifestFile", content = "manifest.yaml") + @SystemProperty(value = "inlineUpgradedVersions", content = "false") @MavenTest void eap_bom_test_case(MavenExecutionResult result) throws MalformedURLException { assertThat(result).isSuccessful(); @@ -132,6 +134,7 @@ void eap_bom_test_case(MavenExecutionResult result) throws MalformedURLException @MavenGoal("${project.groupId}:wildfly-channel-maven-plugin:${project.version}:upgrade") @SystemProperty(value = "manifestFile", content = "manifest.yaml") @SystemProperty(value = "overrideProperties", content = "undertow.version=2.2.5.Final-Overridden") + @SystemProperty(value = "inlineUpgradedVersions", content = "false") @MavenTest void override_property_test_case(MavenExecutionResult result) { assertThat(result).isSuccessful(); @@ -156,6 +159,7 @@ void override_property_test_case(MavenExecutionResult result) { @MavenGoal("${project.groupId}:wildfly-channel-maven-plugin:${project.version}:upgrade") @SystemProperty(value = "manifestFile", content = "manifest.yaml") @SystemProperty(value = "overrideDependencies", content = "io.undertow:undertow-core:2.2.5.Final-Overridden") + @SystemProperty(value = "inlineUpgradedVersions", content = "false") @MavenTest void override_dependency_test_case(MavenExecutionResult result) { assertThat(result).isSuccessful(); @@ -180,6 +184,7 @@ void override_dependency_test_case(MavenExecutionResult result) { */ @MavenGoal("${project.groupId}:wildfly-channel-maven-plugin:${project.version}:upgrade") @SystemProperty(value = "manifestFile", content = "manifest.yaml") + @SystemProperty(value = "inlineUpgradedVersions", content = "false") @MavenTest void external_properties_test_case(MavenExecutionResult result) { assertThat(result).isSuccessful(); @@ -197,6 +202,32 @@ void external_properties_test_case(MavenExecutionResult result) { }); } + @MavenGoal("${project.groupId}:wildfly-channel-maven-plugin:${project.version}:upgrade") + @SystemProperty(value = "manifestFile", content = "manifest.yaml") + @MavenTest + void inline_override_test_case(MavenExecutionResult result) { + assertThat(result).isSuccessful(); + + Model model = result.getMavenProjectResult().getModel(); + DependencyModel dependencyModel = new DependencyModel(model); + + assertThat(dependencyModel.getDependency("org.apache.maven.plugins", "maven-clean-plugin", "pom", null)) + .satisfies(o -> { + assertThat(o).isPresent(); + assertThat(o.get().getVersion()).isEqualTo("3.3.2"); + }); + assertThat(dependencyModel.getDependency("io.undertow", "undertow-core", "jar", null)) + .satisfies(o -> { + assertThat(o).isPresent(); + assertThat(o.get().getVersion()).isEqualTo("2.2.17.Final"); + }); + assertThat(dependencyModel.getDependency("io.undertow", "undertow-servlet", "jar", null)) + .satisfies(o -> { + assertThat(o).isPresent(); + assertThat(o.get().getVersion()).isEqualTo("2.2.17.Final"); + }); + } + @MavenGoal("${project.groupId}:wildfly-channel-maven-plugin:${project.version}:upgrade") @SystemProperty(value = "manifestFile", content = "manifest.yaml") @SystemProperty(value = "doNotDowngrade", content = "true") diff --git a/integration-tests/src/test/resources-its/org/wildfly/channelplugin/it/UpgradeComponentsMojoIT/inline_override_test_case/manifest.yaml b/integration-tests/src/test/resources-its/org/wildfly/channelplugin/it/UpgradeComponentsMojoIT/inline_override_test_case/manifest.yaml new file mode 100644 index 0000000..2ee5916 --- /dev/null +++ b/integration-tests/src/test/resources-its/org/wildfly/channelplugin/it/UpgradeComponentsMojoIT/inline_override_test_case/manifest.yaml @@ -0,0 +1,12 @@ +schemaVersion: 1.0.0 +name: Sample Manifest +streams: + - groupId: org.apache.maven.plugins + artifactId: maven-clean-plugin + version: "3.3.2" + - groupId: io.undertow + artifactId: undertow-core + version: "2.2.17.Final" + - groupId: io.undertow + artifactId: undertow-servlet + version: "2.2.17.Final" diff --git a/integration-tests/src/test/resources-its/org/wildfly/channelplugin/it/UpgradeComponentsMojoIT/inline_override_test_case/pom.xml b/integration-tests/src/test/resources-its/org/wildfly/channelplugin/it/UpgradeComponentsMojoIT/inline_override_test_case/pom.xml new file mode 100644 index 0000000..ab952b4 --- /dev/null +++ b/integration-tests/src/test/resources-its/org/wildfly/channelplugin/it/UpgradeComponentsMojoIT/inline_override_test_case/pom.xml @@ -0,0 +1,71 @@ + + + 4.0.0 + + + org.jboss + jboss-parent + 40 + + + org.wildfly + test-project + 1.0.0-SNAPSHOT + pom + + + 11 + 11 + UTF-8 + 2.2.5.Final + + + + + + io.undertow + undertow-servlet + 2.2.5.Final + + + + + + + org.apache.maven.plugins + maven-clean-plugin + ${version.clean.plugin} + pom + + + io.undertow + undertow-core + ${undertow.version} + + + + + + profile + + + + io.undertow + undertow-core + ${undertow.version} + + + + + + io.undertow + undertow-core + ${undertow.version} + + + + + + diff --git a/plugin/src/main/java/org/wildfly/channelplugin/UpgradeComponentsMojo.java b/plugin/src/main/java/org/wildfly/channelplugin/UpgradeComponentsMojo.java index ded657a..b5e15b8 100644 --- a/plugin/src/main/java/org/wildfly/channelplugin/UpgradeComponentsMojo.java +++ b/plugin/src/main/java/org/wildfly/channelplugin/UpgradeComponentsMojo.java @@ -1,5 +1,7 @@ package org.wildfly.channelplugin; +import groovy.lang.Tuple; +import groovy.lang.Tuple3; import org.apache.commons.lang3.tuple.Pair; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.model.Dependency; @@ -116,11 +118,11 @@ public class UpgradeComponentsMojo extends AbstractChannelMojo { List overrideDependencies; /** - * Replace property reference in dependency version element with inlined version string, when it's not possible to - * override property value due to conflicting versions for different dependencies that use the property. + * If true, upgraded versions would be inlined in the dependency version element, possibly replacing a property + * reference if it was originally used. If false, the property would be updated instead (less robust option). */ - @Parameter(property = "inlineVersionOnConflict", defaultValue = "true") - boolean inlineVersionOnConflict; + @Parameter(property = "inlineUpgradedVersions", defaultValue = "true") + boolean inlineUpgradedVersions; /** * If true, transitive dependencies of the project that are also declared in the channel will be injected into root @@ -268,10 +270,11 @@ private void processModule(Project pmeProject, PomManipulator manipulator) List overriddenProperties = performHardPropertyOverrides(manipulator); List overriddenDependencies = performHardDependencyOverrides(resolvedProjectDependencies, manipulator); - List> dependenciesToUpgrade = findDependenciesToUpgrade(resolvedProjectDependencies); - for (Pair upgrade: dependenciesToUpgrade) { - String newVersion = upgrade.getRight(); - Dependency locatedDependency = upgrade.getLeft(); + List> dependenciesToUpgrade = findDependenciesToUpgrade(resolvedProjectDependencies); + for (Tuple3 upgrade: dependenciesToUpgrade) { + String newVersion = upgrade.getV3(); + Dependency locatedDependency = upgrade.getV1(); + ArtifactRef resolvedDependency = upgrade.getV2(); @SuppressWarnings("UnnecessaryLocalVariable") Dependency d = locatedDependency; @@ -281,7 +284,7 @@ private void processModule(Project pmeProject, PomManipulator manipulator) continue; } - if (VersionUtils.isProperty(locatedDependency.getVersion())) { // dependency version is set from a property + if (VersionUtils.isProperty(locatedDependency.getVersion()) && !inlineUpgradedVersions) { // dependency version is set from a property String originalVersionString = locatedDependency.getVersion(); String versionPropertyName = VersionUtils.extractPropertyName(originalVersionString); @@ -319,20 +322,12 @@ private void processModule(Project pmeProject, PomManipulator manipulator) // property has already been changed to different value String propertyName = projectProperty.getRight(); String currentPropertyValue = upgradedProperties.get(projectProperty); - if (inlineVersionOnConflict) { - getLog().warn(String.format("Inlining version string for %s:%s:%s, new version '%s'. " + - "The original version property '%s' has already been modified to '%s'.", - d.getGroupId(), d.getArtifactId(), d.getVersion(), newVersion, propertyName, - currentPropertyValue)); - manipulator.overrideDependencyVersion(d.getGroupId(), d.getArtifactId(), - originalVersionString, newVersion); - } else { - getLog().warn(String.format( - "Can't upgrade %s:%s:%s to '%s', property '%s' was already upgraded to '%s'.", - d.getGroupId(), d.getArtifactId(), d.getVersion(), newVersion, - propertyName, - currentPropertyValue)); - } + getLog().warn(String.format("Inlining version string for %s:%s:%s, new version '%s'. " + + "The original version property '%s' has already been modified to '%s'.", + d.getGroupId(), d.getArtifactId(), d.getVersion(), newVersion, propertyName, + currentPropertyValue)); + manipulator.overrideDependencyVersion(d.getGroupId(), d.getArtifactId(), + originalVersionString, newVersion); continue; // do not override the property again } } @@ -358,7 +353,7 @@ private void processModule(Project pmeProject, PomManipulator manipulator) d.getGroupId(), d.getArtifactId(), d.getVersion(), newVersion, targetPropertyName)); } } else { // dependency version is inlined in version element, can be directly overwritten - manipulator.overrideDependencyVersion(toArtifactRef(locatedDependency), newVersion); + manipulator.overrideDependencyVersionWithComment(resolvedDependency, newVersion); } } @@ -451,76 +446,76 @@ private Map collectResolvedProjectDependencies(Project return projectDependencies; } - private List> findDependenciesToUpgrade( + private List> findDependenciesToUpgrade( Map resolvedProjectDependencies) { - List> dependenciesToUpgrade = new ArrayList<>(); + List> dependenciesToUpgrade = new ArrayList<>(); for (Map.Entry entry : resolvedProjectDependencies.entrySet()) { - ArtifactRef artifactRef = entry.getKey(); + ArtifactRef resolvedArtifact = entry.getKey(); Dependency dependency = entry.getValue(); - Objects.requireNonNull(artifactRef); + Objects.requireNonNull(resolvedArtifact); Objects.requireNonNull(dependency); - if (projectGavs.contains(artifactRef.asProjectVersionRef())) { + if (projectGavs.contains(resolvedArtifact.asProjectVersionRef())) { getLog().debug("Ignoring in-project dependency: " - + artifactRef.asProjectVersionRef().toString()); + + resolvedArtifact.asProjectVersionRef().toString()); continue; } - if (!unignoredStreams.contains(artifactRef.asProjectRef())) { - if (ignoredStreams.contains(artifactRef.asProjectRef())) { + if (!unignoredStreams.contains(resolvedArtifact.asProjectRef())) { + if (ignoredStreams.contains(resolvedArtifact.asProjectRef())) { getLog().info("Skipping dependency (ignored stream): " - + artifactRef.asProjectVersionRef().toString()); + + resolvedArtifact.asProjectVersionRef().toString()); continue; } - ProjectRef wildCardIgnoredProjectRef = new SimpleProjectRef(artifactRef.getGroupId(), "*"); + ProjectRef wildCardIgnoredProjectRef = new SimpleProjectRef(resolvedArtifact.getGroupId(), "*"); if (ignoredStreams.contains(wildCardIgnoredProjectRef)) { getLog().info("Skipping dependency (ignored stream): " - + artifactRef.asProjectVersionRef().toString()); + + resolvedArtifact.asProjectVersionRef().toString()); continue; } } - if (artifactRef.getVersionString() == null) { + if (resolvedArtifact.getVersionString() == null) { // this is not expected to happen - getLog().error("Resolved dependency has null version: " + artifactRef); + getLog().error("Resolved dependency has null version: " + resolvedArtifact); continue; } - if (VersionUtils.isProperty(artifactRef.getVersionString())) { + if (VersionUtils.isProperty(resolvedArtifact.getVersionString())) { // hack: PME doesn't seem to resolve properties from external parent poms Pair externalProperty = resolveExternalProperty(mavenProject, - VersionUtils.extractPropertyName(artifactRef.getVersionString())); + VersionUtils.extractPropertyName(resolvedArtifact.getVersionString())); if (externalProperty != null) { - artifactRef = new SimpleArtifactRef(artifactRef.getGroupId(), artifactRef.getArtifactId(), - externalProperty.getRight(), artifactRef.getType(), artifactRef.getClassifier()); + resolvedArtifact = new SimpleArtifactRef(resolvedArtifact.getGroupId(), resolvedArtifact.getArtifactId(), + externalProperty.getRight(), resolvedArtifact.getType(), resolvedArtifact.getClassifier()); } else { // didn't manage to resolve dependency version, this is not expected to happen - getLog().error("Resolved dependency has version with property: " + artifactRef); + getLog().error("Resolved dependency has version with property: " + resolvedArtifact); continue; } } if ("test".equals(dependency.getScope()) && ignoreTestDependencies) { getLog().info("Skipping dependency (ignored scope): " - + artifactRef.asProjectVersionRef().toString()); + + resolvedArtifact.asProjectVersionRef().toString()); continue; } try { - VersionResult versionResult = channelSession.findLatestMavenArtifactVersion(artifactRef.getGroupId(), - artifactRef.getArtifactId(), artifactRef.getType(), artifactRef.getClassifier(), - artifactRef.getVersionString()); + VersionResult versionResult = channelSession.findLatestMavenArtifactVersion(resolvedArtifact.getGroupId(), + resolvedArtifact.getArtifactId(), resolvedArtifact.getType(), resolvedArtifact.getClassifier(), + resolvedArtifact.getVersionString()); String channelVersion = versionResult.getVersion(); - int comparison = compareVersions(channelVersion, artifactRef.getVersionString()); + int comparison = compareVersions(channelVersion, resolvedArtifact.getVersionString()); if (comparison > 0 || (!doNotDowngrade && comparison < 0)) { - getLog().info("Updating dependency " + artifactRef.getGroupId() - + ":" + artifactRef.getArtifactId() + ":" + artifactRef.getVersionString() + getLog().info("Updating dependency " + resolvedArtifact.getGroupId() + + ":" + resolvedArtifact.getArtifactId() + ":" + resolvedArtifact.getVersionString() + " to version " + channelVersion); - dependenciesToUpgrade.add(Pair.of(dependency, channelVersion)); + dependenciesToUpgrade.add(Tuple.tuple(dependency, resolvedArtifact, channelVersion)); } } catch (UnresolvedMavenArtifactException e) { // this produces a lot of noise due to many of e.g. test artifacts not being managed by channels, so keep it // at the debug level - getLog().debug("Can't resolve artifact: " + artifactRef, e); + getLog().debug("Can't resolve artifact: " + resolvedArtifact, e); } } return dependenciesToUpgrade; diff --git a/plugin/src/main/java/org/wildfly/channelplugin/manipulation/PomManipulator.java b/plugin/src/main/java/org/wildfly/channelplugin/manipulation/PomManipulator.java index bacabc5..d5d28ef 100644 --- a/plugin/src/main/java/org/wildfly/channelplugin/manipulation/PomManipulator.java +++ b/plugin/src/main/java/org/wildfly/channelplugin/manipulation/PomManipulator.java @@ -2,7 +2,9 @@ import java.io.IOException; import java.io.Writer; +import java.util.Arrays; import java.util.Collection; +import java.util.List; import java.util.Stack; import javax.xml.stream.XMLInputFactory; @@ -64,6 +66,81 @@ public void overrideDependencyVersion(String groupId, String artifactId, String project.getModel()); } + public void overrideDependencyVersionWithComment(ArtifactRef d, String newVersion) throws XMLStreamException { + overrideDependencyVersionWithComment(eventReader, d.getGroupId(), d.getArtifactId(), d.getVersionString(), newVersion); + } + + static void overrideDependencyVersionWithComment(final ModifiedPomXMLEventReader eventReader, + final String groupId, final String artifactId, + final String oldVersionString, final String newVersion) + throws XMLStreamException { + eventReader.rewind(); + + Stack stack = new Stack<>(); + String path = ""; + + List locations = Arrays.asList( + "/project/dependencyManagement/dependencies/dependency", + "/project/dependencies/dependency" + ); + + boolean matchingGroupId = false; + boolean matchingArtifactId = false; + boolean hasVersion = false; + + while (eventReader.hasNext()) { + XMLEvent event = eventReader.nextEvent(); + if (event.isStartElement()) { + String parentElementPath = path; + stack.push(path); + String elementName = event.asStartElement().getName().getLocalPart(); + path = path + "/" + elementName; + + if (locations.contains(parentElementPath)) { + switch (elementName) { + case "groupId": + matchingGroupId = groupId.equals(eventReader.getElementText().trim()); + path = stack.pop(); + break; + case "artifactId": + matchingArtifactId = artifactId.equals(eventReader.getElementText().trim()); + path = stack.pop(); + break; + case "version": + eventReader.mark(0); + break; + } + } + } else if (event.isEndElement()) { + String parentPath = stack.peek(); + String elementName = event.asEndElement().getName().getLocalPart(); + if (locations.contains(parentPath) || locations.contains(path)) { + switch (elementName) { + case "version": + eventReader.mark(1); + String versionString = eventReader.getBetween(0, 1); + hasVersion = !versionString.trim().isEmpty(); + break; + case "dependency": + if (matchingGroupId && matchingArtifactId && hasVersion) { + eventReader.replaceMark(1, " "); + eventReader.replaceBetween(0, 1, newVersion); + } + + matchingGroupId = false; + matchingArtifactId = false; + hasVersion = false; + eventReader.clearMark(0); + eventReader.clearMark(1); + break; + } + } + + path = stack.pop(); + } + } + } + public boolean overrideProperty(String propertyName, String propertyValue) throws XMLStreamException { return PomHelper.setPropertyVersion(eventReader, null, propertyName, propertyValue); } @@ -378,7 +455,7 @@ private static String composeDependencyElementString(ArtifactRef artifact, Colle sb.append(" \n"); sb.append(String.format(" %s\n", artifact.getGroupId())); sb.append(String.format(" %s\n", artifact.getArtifactId())); - sb.append(String.format(" %s \n", artifact.getVersionString(), oldVersion)); + sb.append(String.format(" %s \n", artifact.getVersionString(), oldVersion)); if (artifact.getClassifier() != null) { sb.append(String.format(" %s\n", artifact.getClassifier())); } diff --git a/plugin/src/test/java/org/wildfly/channelplugin/MojoConfiguratorTestCase.java b/plugin/src/test/java/org/wildfly/channelplugin/MojoConfiguratorTestCase.java index 88f89fb..5578f48 100644 --- a/plugin/src/test/java/org/wildfly/channelplugin/MojoConfiguratorTestCase.java +++ b/plugin/src/test/java/org/wildfly/channelplugin/MojoConfiguratorTestCase.java @@ -46,12 +46,12 @@ public void test() throws IOException { public void testDefaultOverrides() throws Exception { UpgradeComponentsMojo mojo = new UpgradeComponentsMojo(); // Set to non-default value: - mojo.inlineVersionOnConflict = false; + mojo.injectTransitiveDependencies = false; mojo.overrideDependencies = List.of("a:b:c"); mojo.localRepositoryPath = "some/path"; // Create config file that tries to change above settings: - Files.writeString(config.toPath(), "-DinlineVersionOnConflict=true\n" + Files.writeString(config.toPath(), "-DinjectTransitiveDependencies=true\n" + "-DoverrideDependencies=d:e:f\n" + "-DlocalRepository=other/path"); @@ -59,7 +59,7 @@ public void testDefaultOverrides() throws Exception { configurator.configureProperties(mojo); // Check that original values were preserved: - assertThat(mojo.inlineVersionOnConflict).isEqualTo(false); + assertThat(mojo.injectTransitiveDependencies).isEqualTo(false); assertThat(mojo.overrideDependencies).containsExactly("a:b:c"); assertThat(mojo.localRepositoryPath).isEqualTo("some/path"); } diff --git a/plugin/src/test/java/org/wildfly/channelplugin/manipulation/PomManipulatorTestCase.java b/plugin/src/test/java/org/wildfly/channelplugin/manipulation/PomManipulatorTestCase.java index e0ed601..f1ae21a 100644 --- a/plugin/src/test/java/org/wildfly/channelplugin/manipulation/PomManipulatorTestCase.java +++ b/plugin/src/test/java/org/wildfly/channelplugin/manipulation/PomManipulatorTestCase.java @@ -99,6 +99,26 @@ public void testInsertPluginRepository() throws IOException, XMLStreamException, .matches(r -> r.getId().equals("repo") && r.getUrl().equals("https://maven/repo")); } + @Test + public void testOverrideDependencyVersionWithComment() throws IOException, XMLStreamException, ManipulationException { + DependencyModel model = readDependencyModel(); + Assertions.assertThat(model.getDependency("org.jboss.marshalling", "jboss-marshalling", "jar", null)) + .satisfies(dependency -> { + Assertions.assertThat(dependency).isPresent(); + Assertions.assertThat(dependency.get().getVersion()).isEqualTo("2.0.6.Final-redhat-00001"); + }); + + PomManipulator.overrideDependencyVersionWithComment(eventReader, "org.jboss.marshalling", "jboss-marshalling", + "2.0.6.Final-redhat-00001", "2.0.7.Final"); + + model = readDependencyModel(); + Assertions.assertThat(model.getDependency("org.jboss.marshalling", "jboss-marshalling", "jar", null)) + .satisfies(dependency -> { + Assertions.assertThat(dependency).isPresent(); + Assertions.assertThat(dependency.get().getVersion()).isEqualTo("2.0.7.Final"); + }); + } + private Model readModel() throws IOException, ManipulationException { Path pomFile = Files.createTempFile("pom", "xml"); Files.write(pomFile, content.toString().getBytes()); diff --git a/plugin/src/test/resources/org/wildfly/channelplugin/manipulation/pom.xml b/plugin/src/test/resources/org/wildfly/channelplugin/manipulation/pom.xml index 1fd7b00..39e85a8 100644 --- a/plugin/src/test/resources/org/wildfly/channelplugin/manipulation/pom.xml +++ b/plugin/src/test/resources/org/wildfly/channelplugin/manipulation/pom.xml @@ -22,7 +22,9 @@ io.undertow undertow-core - ${undertow.version} + + ${undertow.version} + io.undertow diff --git a/pom.xml b/pom.xml index 55747c9..bf7248f 100644 --- a/pom.xml +++ b/pom.xml @@ -88,7 +88,7 @@ org.codehaus.mojo versions-maven-plugin - 2.10.0 + 2.17.0 org.eclipse.aether