1919import org .apache .maven .model .Dependency ;
2020import org .apache .maven .model .DependencyManagement ;
2121import org .apache .maven .project .MavenProject ;
22+ import org .codehaus .plexus .interpolation .InterpolationException ;
23+ import org .codehaus .plexus .interpolation .Interpolator ;
2224import org .gradlex .maven .javamodule .dependencies .internal .utils .ModuleInfo ;
2325import org .slf4j .Logger ;
2426import org .slf4j .LoggerFactory ;
@@ -31,19 +33,19 @@ class ConfigurationUtil {
3133
3234 private static final Logger LOGGER = LoggerFactory .getLogger (ConfigurationUtil .class );
3335
34- static void addDependenciesForModuleInfo (String from , List <Dependency > dependencies , ModuleInfo mainModuleInfo , ModuleInfo testModuleInfo , List <Dependency > managed , Map <String , String > moduleNameToLocal , Map <String , String > localTestMappings , Map <String , String > localMappings ) {
35- mainModuleInfo .get (ModuleInfo .Directive .REQUIRES ).forEach (d -> addDependency (from , dependencies , managed , moduleNameToLocal , localTestMappings , localMappings , "compile" , d )); // should be "runtime" in consumer BOM
36- mainModuleInfo .get (ModuleInfo .Directive .REQUIRES_TRANSITIVE ).forEach (d -> addDependency (from , dependencies , managed , moduleNameToLocal , localTestMappings , localMappings , "compile" , d ));
37- mainModuleInfo .get (ModuleInfo .Directive .REQUIRES_STATIC ).forEach (d -> addDependency (from , dependencies , managed , moduleNameToLocal , localTestMappings , localMappings , "provided" , d ));
38- mainModuleInfo .get (ModuleInfo .Directive .REQUIRES_STATIC_TRANSITIVE ).forEach (d -> addDependency (from , dependencies , managed , moduleNameToLocal , localTestMappings , localMappings , "compile" , d )); // should be "???" in consumer BOM
36+ static void addDependenciesForModuleInfo (String from , List <Dependency > dependencies , ModuleInfo mainModuleInfo , ModuleInfo testModuleInfo , List <Dependency > managed , Map <String , String > moduleNameToLocal , Map <String , String > localTestMappings , Map <String , String > localMappings , Interpolator interpolator ) {
37+ mainModuleInfo .get (ModuleInfo .Directive .REQUIRES ).forEach (d -> addDependency (from , dependencies , managed , moduleNameToLocal , localTestMappings , localMappings , "compile" , d , interpolator )); // should be "runtime" in consumer BOM
38+ mainModuleInfo .get (ModuleInfo .Directive .REQUIRES_TRANSITIVE ).forEach (d -> addDependency (from , dependencies , managed , moduleNameToLocal , localTestMappings , localMappings , "compile" , d , interpolator ));
39+ mainModuleInfo .get (ModuleInfo .Directive .REQUIRES_STATIC ).forEach (d -> addDependency (from , dependencies , managed , moduleNameToLocal , localTestMappings , localMappings , "provided" , d , interpolator ));
40+ mainModuleInfo .get (ModuleInfo .Directive .REQUIRES_STATIC_TRANSITIVE ).forEach (d -> addDependency (from , dependencies , managed , moduleNameToLocal , localTestMappings , localMappings , "compile" , d , interpolator )); // should be "???" in consumer BOM
3941
40- testModuleInfo .get (ModuleInfo .Directive .REQUIRES ).forEach (d -> addDependency (from , dependencies , managed , moduleNameToLocal , localTestMappings , localMappings , "test" , d ));
41- testModuleInfo .get (ModuleInfo .Directive .REQUIRES_TRANSITIVE ).forEach (d -> addDependency (from , dependencies , managed , moduleNameToLocal , localTestMappings , localMappings , "test" , d ));
42- testModuleInfo .get (ModuleInfo .Directive .REQUIRES_STATIC ).forEach (d -> addDependency (from , dependencies , managed , moduleNameToLocal , localTestMappings , localMappings , "test" , d ));
43- testModuleInfo .get (ModuleInfo .Directive .REQUIRES_STATIC_TRANSITIVE ).forEach (d -> addDependency (from , dependencies , managed , moduleNameToLocal , localTestMappings , localMappings , "test" , d ));
42+ testModuleInfo .get (ModuleInfo .Directive .REQUIRES ).forEach (d -> addDependency (from , dependencies , managed , moduleNameToLocal , localTestMappings , localMappings , "test" , d , interpolator ));
43+ testModuleInfo .get (ModuleInfo .Directive .REQUIRES_TRANSITIVE ).forEach (d -> addDependency (from , dependencies , managed , moduleNameToLocal , localTestMappings , localMappings , "test" , d , interpolator ));
44+ testModuleInfo .get (ModuleInfo .Directive .REQUIRES_STATIC ).forEach (d -> addDependency (from , dependencies , managed , moduleNameToLocal , localTestMappings , localMappings , "test" , d , interpolator ));
45+ testModuleInfo .get (ModuleInfo .Directive .REQUIRES_STATIC_TRANSITIVE ).forEach (d -> addDependency (from , dependencies , managed , moduleNameToLocal , localTestMappings , localMappings , "test" , d , interpolator ));
4446 }
4547
46- private static void addDependency (String from , List <Dependency > dependencies , List <Dependency > managed , Map <String , String > moduleNameToLocal , Map <String , String > moduleNameToLocalTest , Map <String , String > localMappings , String scope , String moduleName ) {
48+ private static void addDependency (String from , List <Dependency > dependencies , List <Dependency > managed , Map <String , String > moduleNameToLocal , Map <String , String > moduleNameToLocalTest , Map <String , String > localMappings , String scope , String moduleName , Interpolator interpolator ) {
4749 if (JDKInfo .MODULES .contains (moduleName )) {
4850 return ;
4951 }
@@ -54,13 +56,13 @@ private static void addDependency(String from, List<Dependency> dependencies, Li
5456 }
5557 if (localModule != null ) {
5658 String [] gav = localModule .split (":" );
57- defineDependency (dependencies , scope , gav [0 ], gav [1 ], gav [2 ], false );
59+ defineDependency (dependencies , scope , gav [0 ], gav [1 ], gav [2 ], null );
5860 return ;
5961 }
6062 String localTestModule = moduleNameToLocalTest .get (moduleName );
6163 if (localTestModule != null ) {
6264 String [] gav = localTestModule .split (":" );
63- defineDependency (dependencies , scope , gav [0 ], gav [1 ], gav [2 ], true );
65+ defineDependency (dependencies , scope , gav [0 ], gav [1 ], gav [2 ], "tests" );
6466 return ;
6567 }
6668
@@ -74,23 +76,34 @@ private static void addDependency(String from, List<Dependency> dependencies, Li
7476 }
7577
7678 String [] ga = externalModule .split (":" );
79+ String [] artifactAndClassifier = ga [1 ].split ("\\ |" );
80+ String group = ga [0 ];
81+ String artifact = artifactAndClassifier [0 ];
82+ String classifier ;
83+
84+ try {
85+ classifier = artifactAndClassifier .length > 1 ? interpolator .interpolate (artifactAndClassifier [1 ]) : null ;
86+ } catch (InterpolationException e ) {
87+ throw new RuntimeException (e );
88+ }
89+
7790 Optional <Dependency > version =
78- managed .stream ().filter (v -> v .getGroupId ().equals (ga [ 0 ] ) && v .getArtifactId ().equals (ga [ 1 ] )).findFirst ();
91+ managed .stream ().filter (v -> v .getGroupId ().equals (group ) && v .getArtifactId ().equals (artifact )).findFirst ();
7992 if (!version .isPresent ()) {
8093 LOGGER .warn ("Version missing: {}" , externalModule );
8194 return ;
8295 }
83- defineDependency (dependencies , scope , ga [ 0 ], ga [ 1 ] , version .get ().getVersion (), false );
96+ defineDependency (dependencies , scope , group , artifact , version .get ().getVersion (), classifier );
8497 }
8598
86- private static void defineDependency (List <Dependency > dependencies , String scope , String group , String artifactId , String version , boolean testsClassifier ) {
99+ private static void defineDependency (List <Dependency > dependencies , String scope , String group , String artifactId , String version , String classifier ) {
87100 Dependency dependency = new Dependency ();
88101 dependency .setGroupId (group );
89102 dependency .setArtifactId (artifactId );
90103 dependency .setVersion (version );
91104 dependency .setScope (scope );
92- if (testsClassifier ) {
93- dependency .setClassifier ("tests" );
105+ if (classifier != null ) {
106+ dependency .setClassifier (classifier );
94107 }
95108 dependencies .add (dependency );
96109 }
0 commit comments