@@ -2936,4 +2936,76 @@ void escapedA() {
2936
2936
)
2937
2937
);
2938
2938
}
2939
+
2940
+ @ Test
2941
+ void transitiveDependencyManagement () {
2942
+ rewriteRun (
2943
+ mavenProject ("depends-on-guava" ,
2944
+ pomXml ("""
2945
+ <project>
2946
+ <modelVersion>4.0.0</modelVersion>
2947
+ <groupId>org.example</groupId>
2948
+ <artifactId>depends-on-guava</artifactId>
2949
+ <version>0.0.1</version>
2950
+ <dependencies>
2951
+ <dependency>
2952
+ <groupId>com.google.guava</groupId>
2953
+ <artifactId>guava</artifactId>
2954
+ <version>29.0-jre</version>
2955
+ </dependency>
2956
+ </dependencies>
2957
+ <dependencyManagement>
2958
+ <dependencies>
2959
+ <dependency>
2960
+ <groupId>com.google.guava</groupId>
2961
+ <artifactId>guava</artifactId>
2962
+ <version>30.0-jre</version>
2963
+ </dependency>
2964
+ </dependencies>
2965
+ </dependencyManagement>
2966
+ </project>
2967
+ """ ,
2968
+ spec -> spec .afterRecipe (pom -> {
2969
+ //noinspection OptionalGetWithoutIsPresent
2970
+ List <ResolvedDependency > guava = pom .getMarkers ().findFirst (MavenResolutionResult .class )
2971
+ .map (mrr -> mrr .findDependencies ("com.google.guava" , "guava" , Scope .Compile ))
2972
+ .get ();
2973
+
2974
+ assertThat (guava )
2975
+ .singleElement ()
2976
+ .as ("Dependency management cannot override the version of a direct dependency" )
2977
+ .matches (it -> "29.0-jre" .equals (it .getVersion ()));
2978
+ })
2979
+ )),
2980
+ mavenProject ("transitively-depends-on-guava" ,
2981
+ pomXml ("""
2982
+ <project>
2983
+ <modelVersion>4.0.0</modelVersion>
2984
+ <groupId>org.example</groupId>
2985
+ <artifactId>transitively-depends-on-guava</artifactId>
2986
+ <version>0.0.1</version>
2987
+ <dependencies>
2988
+ <dependency>
2989
+ <groupId>org.example</groupId>
2990
+ <artifactId>depends-on-guava</artifactId>
2991
+ <version>0.0.1</version>
2992
+ </dependency>
2993
+ </dependencies>
2994
+ </project>
2995
+ """ ,
2996
+ spec -> spec .afterRecipe (pom -> {
2997
+ //noinspection OptionalGetWithoutIsPresent
2998
+ List <ResolvedDependency > guava = pom .getMarkers ().findFirst (MavenResolutionResult .class )
2999
+ .map (mrr -> mrr .findDependencies ("com.google.guava" , "guava" , Scope .Compile ))
3000
+ .get ();
3001
+
3002
+ assertThat (guava )
3003
+ .singleElement ()
3004
+ .as ("The dependency management of dependency does not override the versions of its own direct dependencies" )
3005
+ .matches (it -> "29.0-jre" .equals (it .getVersion ()));
3006
+ })
3007
+ )
3008
+ )
3009
+ );
3010
+ }
2939
3011
}
0 commit comments