@@ -50,6 +50,29 @@ resolve_snapshot_deps() {
5050 read
5151}
5252
53+ # Update all modules that depend on the released module to use the next snapshot version
54+ update_inter_module_deps () {
55+ released_module=$1
56+ next_snapshot_version=$2
57+ debug " Updating inter-module dependencies on $released_module to $next_snapshot_version "
58+
59+ # Property name pattern: scijava-meta -> scijava-meta.version
60+ property_name=" ${released_module} .version"
61+
62+ # Find all module POMs that have this property
63+ for module_dir in $( get_modules)
64+ do
65+ module_pom=" $module_dir /pom.xml"
66+ if test -f " $module_pom " && grep -q " <${property_name} >" " $module_pom "
67+ then
68+ debug " Updating $property_name in $module_pom to $next_snapshot_version "
69+ sed -i.bak " s|<${property_name} >.*</${property_name} >|<${property_name} >${next_snapshot_version} </${property_name} >|" " $module_pom "
70+ rm -f " $module_pom .bak"
71+ git add " $module_pom "
72+ fi
73+ done
74+ }
75+
5376# -- Constants and settings --
5477
5578SCIJAVA_BASE_REPOSITORY=-DaltDeploymentRepository=scijava.releases::default::dav:https://maven.scijava.org/content/repositories
@@ -136,19 +159,12 @@ Options include:
136159"
137160
138161# -- Extract project details --
162+ # Note: For multi-module projects, this will be re-extracted after module selection
139163debug " Extracting project details"
140164
141165echoArg=' ${project.version}:${license.licenseName}:${project.parent.groupId}:${project.parent.artifactId}:${project.parent.version}'
142-
143- if test " $IS_AGGREGATOR "
144- then
145- projectDetails=$( mvn -B -N -f " $MODULE_NAME /pom.xml" -Dexec.executable=echo -Dexec.args=" $echoArg " exec:exec -q)
146- test $? -eq 0 || projectDetails=$( mvn -B -U -N -f " $MODULE_NAME /pom.xml" -Dexec.executable=echo -Dexec.args=" $echoArg " exec:exec -q)
147- else
148- projectDetails=$( mvn -B -N -Dexec.executable=echo -Dexec.args=" $echoArg " exec:exec -q)
149- test $? -eq 0 || projectDetails=$( mvn -B -U -N -Dexec.executable=echo -Dexec.args=" $echoArg " exec:exec -q)
150- fi
151-
166+ projectDetails=$( mvn -B -N -Dexec.executable=echo -Dexec.args=" $echoArg " exec:exec -q)
167+ test $? -eq 0 || projectDetails=$( mvn -B -U -N -Dexec.executable=echo -Dexec.args=" $echoArg " exec:exec -q)
152168test $? -eq 0 || die " Could not extract version from pom.xml. Error follows:\n$projectDetails "
153169printf ' %s' " $projectDetails \n" | grep -Fqv ' [ERROR]' ||
154170 die " Error extracting version from pom.xml. Error follows:\n$projectDetails "
@@ -263,6 +279,18 @@ then
263279 # Validate module exists
264280 test -d " $MODULE_NAME " || die " Module directory '$MODULE_NAME ' not found"
265281 echo " $modules " | grep -qx " $MODULE_NAME " || die " Module '$MODULE_NAME ' not found in aggregator POM"
282+
283+ # Re-extract project details from the selected module
284+ debug " Extracting module project details"
285+ projectDetails=$( mvn -B -N -f " $MODULE_NAME /pom.xml" -Dexec.executable=echo -Dexec.args=" $echoArg " exec:exec -q)
286+ test $? -eq 0 || projectDetails=$( mvn -B -U -N -f " $MODULE_NAME /pom.xml" -Dexec.executable=echo -Dexec.args=" $echoArg " exec:exec -q)
287+ test $? -eq 0 || die " Could not extract version from $MODULE_NAME /pom.xml. Error follows:\n$projectDetails "
288+ projectDetails=$( printf ' %s' " $projectDetails " | sed -r " s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" )
289+ projectDetails=$( printf ' %s' " $projectDetails " | tr -d ' \n' )
290+ currentVersion=${projectDetails%%:* }
291+ projectDetails=${projectDetails#*: }
292+ licenseName=${projectDetails%%:* }
293+ parentGAV=${projectDetails#*: }
266294fi
267295
268296# If REMOTE is unset, use branch's upstream remote by default.
@@ -453,11 +481,19 @@ then
453481 # Revert O to produce R
454482 $DRY_RUN git revert --no-edit HEAD~2 &&
455483
456- # Now: ...prev → O → A → B → R
457- # Squash the last 4 commits
484+ # Update inter-module dependencies to use the next snapshot version
485+ # (The revert brought back old snapshot deps, but other modules should use the next snapshot)
486+ if test -z " $DRY_RUN "
487+ then
488+ next_version=$( grep ' <version>' " $MODULE_NAME /pom.xml" | head -1 | sed ' s/.*<version>\(.*\)<\/version>.*/\1/' )
489+ update_inter_module_deps " $MODULE_NAME " " $next_version "
490+ fi &&
491+
492+ # Now: ...prev → O → A → B → R (+ inter-module dep updates)
493+ # Squash the last 4 commits (plus any inter-module dep updates)
458494 $DRY_RUN git reset --soft HEAD~4 &&
459495
460- # Net changes staged: only module version bump (O+A+B+R = just the version change)
496+ # Net changes staged: module version bump + inter-module deps updated to next snapshot
461497 if ! git diff-index --cached --quiet --ignore-submodules HEAD --
462498 then
463499 if test -z " $DRY_RUN "
0 commit comments