From 59acd5e2401fde24065a5d27cfb717d7b8ed51e5 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 7 Dec 2020 11:03:21 +0100 Subject: [PATCH] #159 - Remove Spring Framework/Reactor from dependency upgrade process. Also, consider groupId when resolving dependencies to avoid artifactId clashes. --- .../data/release/dependency/Dependencies.java | 10 +++------- .../release/dependency/DependencyOperations.java | 16 ++++++++++------ .../dependency/DependencyUpgradeProposals.java | 3 ++- .../release/dependency/ProjectDependencies.java | 3 +-- .../DependencyOperationsIntegrationTests.java | 2 +- .../DependencyOperationsUnitTests.java | 12 ++++++------ .../DependencyUpgradeProposalsUnitTests.java | 6 ++++-- 7 files changed, 27 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/springframework/data/release/dependency/Dependencies.java b/src/main/java/org/springframework/data/release/dependency/Dependencies.java index c395c20..9b16984 100644 --- a/src/main/java/org/springframework/data/release/dependency/Dependencies.java +++ b/src/main/java/org/springframework/data/release/dependency/Dependencies.java @@ -54,8 +54,6 @@ public class Dependencies { public static final Dependency QUERYDSL = Dependency.of("Querydsl", "com.querydsl:querydsl-jpa"); - public static final Dependency PROJECT_REACTOR = Dependency.of("Project Reactor", "io.projectreactor:reactor-bom"); - public static final Dependency RXJAVA1 = Dependency.of("RxJava", "io.reactivex:rxjava"); public static final Dependency RXJAVA2 = Dependency.of("RxJava", "io.reactivex.rxjava2:rxjava"); @@ -65,9 +63,6 @@ public class Dependencies { public static final Dependency RXJAVA_RS = Dependency.of("RxJava Reactive Streams", "io.reactivex:rxjava-reactive-streams"); - public static final Dependency SPRING_FRAMEWORK = Dependency.of("Spring Framework", - "org.springframework:spring-core"); - public static final Dependency SPRING_HATEOAS = Dependency.of("Spring Hateoas", "org.springframework.hateoas:spring-hateoas"); @@ -136,9 +131,10 @@ public class Dependencies { .orElseThrow(() -> new IllegalArgumentException(String.format("No such dependency: %s", name))); } - public static Dependency getRequiredByArtifactId(String artifactId) { + public static Dependency getRequiredDepependency(String groupId, String artifactId) { - return dependencies.stream().filter(it -> it.getArtifactId().equals(artifactId)).findFirst() + return dependencies.stream().filter(it -> it.getGroupId().equals(groupId) && it.getArtifactId().equals(artifactId)) + .findFirst() .orElseThrow(() -> new IllegalArgumentException(String.format("No such dependency: %s", artifactId))); } diff --git a/src/main/java/org/springframework/data/release/dependency/DependencyOperations.java b/src/main/java/org/springframework/data/release/dependency/DependencyOperations.java index 8d2f637..a75cf97 100644 --- a/src/main/java/org/springframework/data/release/dependency/DependencyOperations.java +++ b/src/main/java/org/springframework/data/release/dependency/DependencyOperations.java @@ -98,7 +98,8 @@ public class DependencyOperations { DependencyVersion currentVersion = currentDependencies.get(dependency); List versions = getAvailableVersions(dependency); - DependencyUpgradeProposal proposal = getDependencyUpgradeProposal(iteration, currentVersion, versions); + DependencyUpgradeProposal proposal = getDependencyUpgradeProposal(iteration, dependency, currentVersion, + versions); proposals.put(dependency, proposal); }); @@ -223,9 +224,9 @@ public class DependencyOperations { } protected static DependencyUpgradeProposal getDependencyUpgradeProposal(Iteration iteration, - DependencyVersion currentVersion, List allVersions) { + Dependency dependency, DependencyVersion currentVersion, List allVersions) { - DependencyVersion latestMinor = findLatestMinor(iteration, currentVersion, allVersions); + DependencyVersion latestMinor = findLatestMinor(iteration, dependency, currentVersion, allVersions); DependencyVersion latest = findLatest(iteration, allVersions); List newerVersions = allVersions.stream() // .sorted() // @@ -249,7 +250,8 @@ public class DependencyOperations { () -> new IllegalArgumentException("Cannot determine new latest version from " + availableVersions)); } - private static DependencyVersion findLatestMinor(Iteration iteration, DependencyVersion currentVersion, + private static DependencyVersion findLatestMinor(Iteration iteration, Dependency dependency, + DependencyVersion currentVersion, List availableVersions) { return availableVersions.stream().filter(it -> { @@ -275,7 +277,9 @@ public class DependencyOperations { }) // .max(DependencyVersion::compareTo) // .orElseThrow( - () -> new IllegalArgumentException("Cannot determine new minor version from " + availableVersions)); + () -> new IllegalArgumentException(String.format( + "Cannot determine new minor version from %s for %s (%s). Current version: %s", availableVersions, + dependency.getName(), dependency.getArtifactId(), currentVersion.getIdentifier()))); } DependencyVersions getCurrentDependencies(Project project) { @@ -296,7 +300,7 @@ public class DependencyOperations { Dependency dependency = projectDependency.getDependency(); if (!((project == Projects.MONGO_DB && projectDependency.getProperty().equals("mongo.reactivestreams")) - || project == Projects.NEO4J)) { + || project == Projects.NEO4J || project == Projects.BUILD)) { if (it.getDependencyVersion(dependency.getArtifactId()) == null && it.getManagedDependency(dependency.getArtifactId()) == null) { diff --git a/src/main/java/org/springframework/data/release/dependency/DependencyUpgradeProposals.java b/src/main/java/org/springframework/data/release/dependency/DependencyUpgradeProposals.java index 582432d..fdaa059 100644 --- a/src/main/java/org/springframework/data/release/dependency/DependencyUpgradeProposals.java +++ b/src/main/java/org/springframework/data/release/dependency/DependencyUpgradeProposals.java @@ -162,8 +162,9 @@ public class DependencyUpgradeProposals { throw new IllegalArgumentException(String.format("Unexpected key: %s", k)); } + String groupId = matcher.group(1); String artifactId = matcher.group(2); - Dependency dependency = Dependencies.getRequiredByArtifactId(artifactId); + Dependency dependency = Dependencies.getRequiredDepependency(groupId, artifactId); result.put(dependency, DependencyVersion.of(v.toString())); diff --git a/src/main/java/org/springframework/data/release/dependency/ProjectDependencies.java b/src/main/java/org/springframework/data/release/dependency/ProjectDependencies.java index 59406ff..77c5c9c 100644 --- a/src/main/java/org/springframework/data/release/dependency/ProjectDependencies.java +++ b/src/main/java/org/springframework/data/release/dependency/ProjectDependencies.java @@ -48,13 +48,12 @@ public class ProjectDependencies implements Streamable