@@ -2936,4 +2936,76 @@ void escapedA() {
29362936 )
29372937 );
29382938 }
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+ }
29393011}
0 commit comments