@@ -221,7 +221,7 @@ public boolean build(Map<String, String> properties) throws IOException {
221221 Set <Dependency > allPackagesFromFileSets = new HashSet <>();
222222 for (ContentPackageFileSet fileSet : fileSets ) {
223223 for (ContentPackageFile pkg : fileSet .getContentPackages ()) {
224- allPackagesFromFileSets . add ( new Dependency ( pkg . getGroup () , pkg . getName (), VersionRange . fromString ( pkg . getVersion ())) );
224+ addDependencyInformation ( allPackagesFromFileSets , pkg );
225225 }
226226 }
227227
@@ -364,6 +364,7 @@ private List<TemporaryContentPackageFile> processContentPackage(ContentPackageFi
364364 Set <Dependency > allPackagesFromFileSets ) throws IOException {
365365
366366 List <TemporaryContentPackageFile > result = new ArrayList <>();
367+ List <TemporaryContentPackageFile > subPackages = new ArrayList <>();
367368
368369 // create temp zip file to create rewritten copy of package
369370 File tempFile = File .createTempFile (FilenameUtils .getBaseName (pkg .getFile ().getName ()), ".zip" );
@@ -386,9 +387,13 @@ private List<TemporaryContentPackageFile> processContentPackage(ContentPackageFi
386387 Properties props = new Properties ();
387388 props .loadFromXML (is );
388389 addSuffixToPackageName (props , pkg , environmentRunMode );
389- if (autoDependenciesMode != AutoDependenciesMode .OFF ) {
390- updateDependencies (props , previousPkg , environmentRunMode , allPackagesFromFileSets );
390+
391+ // update package dependencies
392+ ContentPackageFile dependencyFile = previousPkg ;
393+ if (autoDependenciesMode == AutoDependenciesMode .OFF ) {
394+ dependencyFile = null ;
391395 }
396+ updateDependencies (props , dependencyFile , environmentRunMode , allPackagesFromFileSets );
392397
393398 // if package type is missing package properties, put in the type defined in model
394399 if (props .get (NAME_PACKAGE_TYPE ) == null ) {
@@ -417,7 +422,7 @@ else if (StringUtils.equals(FilenameUtils.getExtension(zipInEntry.getName()), "z
417422 + " with invalid package type: '" + StringUtils .defaultString (tempSubPackage .getPackageType ()) + "'" );
418423 }
419424 if (StringUtils .isNoneBlank (tempSubPackage .getGroup (), tempSubPackage .getName ())) {
420- result . addAll ( processContentPackage ( tempSubPackage , previousPkg , environmentRunMode , allPackagesFromFileSets ) );
425+ subPackages . add ( tempSubPackage );
421426 processedEntry = true ;
422427 }
423428 else {
@@ -438,6 +443,16 @@ else if (StringUtils.equals(FilenameUtils.getExtension(zipInEntry.getName()), "z
438443 }
439444 }
440445
446+ // add sub package metadata to set with dependency information
447+ for (TemporaryContentPackageFile tempSubPackage : subPackages ) {
448+ addDependencyInformation (allPackagesFromFileSets , tempSubPackage );
449+ }
450+
451+ // process sub packages and add to result
452+ for (TemporaryContentPackageFile tempSubPackage : subPackages ) {
453+ result .addAll (processContentPackage (tempSubPackage , previousPkg , environmentRunMode , allPackagesFromFileSets ));
454+ }
455+
441456 result .add (new TemporaryContentPackageFile (tempFile , pkg .getVariants ()));
442457 }
443458 return result ;
@@ -506,6 +521,10 @@ private static Dependency[] removeReferencesToManagedPackages(Dependency[] deps,
506521 .toArray (size -> new Dependency [size ]);
507522 }
508523
524+ private static void addDependencyInformation (Set <Dependency > allPackagesFromFileSets , ContentPackageFile pkg ) {
525+ allPackagesFromFileSets .add (new Dependency (pkg .getGroup (), pkg .getName (), VersionRange .fromString (pkg .getVersion ())));
526+ }
527+
509528 public String getGroupName () {
510529 return this .groupName ;
511530 }
0 commit comments