diff --git a/CHANGELOG.md b/CHANGELOG.md index 4fb9e9bc..ed436f62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Version 2.4 * [Fix] [#238](https://github.com/gradlex-org/jvm-dependency-conflict-resolution/issues/238) Patch DSL now works for dependencies with non-standard variant names (e.g. com.google.guava). +* [Deprecation] [#251](https://github.com/gradlex-org/jvm-dependency-conflict-resolution/issues/251) Deprecate GuavaComponentRule in favor of more general patch DSL. ## Version 2.3 * [New Rule] [#66](https://github.com/gradlex-org/jvm-dependency-conflict-resolution/issues/66) itext:itext / com.lowagie:itext (Thanks [Björn Kautler](https://github.com/Vampire) for reporting) diff --git a/README.md b/README.md index e9724a96..2663fe31 100644 --- a/README.md +++ b/README.md @@ -100,21 +100,14 @@ If some of the transitive dependencies are not wanted in your case, you can fine jvmDependencyConflicts { patch { module("com.google.guava:guava") { - removeDependency("com.google.code.findbugs:jsr305") reduceToCompileOnlyApiDependency("com.google.errorprone:error_prone_annotations") + reduceToCompileOnlyApiDependency("com.google.j2objc:j2objc-annotations") + reduceToCompileOnlyApiDependency("org.jspecify:jspecify") } } } ``` -If you need the previous behavior for older Guava versions, you can explicitly apply the `GuavaComponentRule`. - -```kotlin -dependencies.components { - withModule("com.google.guava:guava") -} -``` - ## Disclaimer Gradle and the Gradle logo are trademarks of Gradle, Inc. diff --git a/src/main/java/org/gradlex/jvm/dependency/conflict/resolution/rules/GuavaComponentRule.java b/src/main/java/org/gradlex/jvm/dependency/conflict/resolution/rules/GuavaComponentRule.java index 081b013e..e8e92c5f 100644 --- a/src/main/java/org/gradlex/jvm/dependency/conflict/resolution/rules/GuavaComponentRule.java +++ b/src/main/java/org/gradlex/jvm/dependency/conflict/resolution/rules/GuavaComponentRule.java @@ -29,8 +29,24 @@ /** * Kept for individual usage to get the patch functionality for older Guava versions. * Might be removed in future versions. + * + * @deprecated use patch DSL: + *

+ *

+ *         jvmDependencyConflicts {
+ *           patch {
+ *             module("com.google.guava:guava") {
+ *               reduceToCompileOnlyApiDependency("com.google.errorprone:error_prone_annotations")
+ *               reduceToCompileOnlyApiDependency("com.google.j2objc:j2objc-annotations")
+ *               reduceToCompileOnlyApiDependency("org.jspecify:jspecify")
+ *             }
+ *           }
+ *         }
+ *     
+ *

*/ @CacheableRule +@Deprecated abstract public class GuavaComponentRule implements ComponentMetadataRule { private final static Attribute TARGET_JVM_ENVIRONMENT_ATTRIBUTE = diff --git a/src/test/groovy/org/gradlex/jvm/dependency/conflict/test/GuavaClasspathTest.groovy b/src/test/groovy/org/gradlex/jvm/dependency/conflict/test/GuavaClasspathTest.groovy index 5ac591b3..f427cb2e 100644 --- a/src/test/groovy/org/gradlex/jvm/dependency/conflict/test/GuavaClasspathTest.groovy +++ b/src/test/groovy/org/gradlex/jvm/dependency/conflict/test/GuavaClasspathTest.groovy @@ -121,12 +121,8 @@ class GuavaClasspathTest extends Specification { result.add([it[0], it[1], it[2], 'standard-jvm', 'runtimeClasspath']) } } - if (System.getProperty("gradleVersionUnderTest") == "7.6.4") { - // only do all permutations for one Gradle version - return result - } - // reduced amount of permutations - return result.subList(0, 80) + // The rule we are testing is Deprecated, until we remove it just test one permutation + return result.subList(0, 4) } @Unroll