@@ -26,7 +26,9 @@ def modernize_pom(file_path, parent_version, source_repo_name=None):
2626 in_dependency = False
2727 in_reporting = False
2828 current_dependency_lines = []
29- has_x_version_update = False
29+ should_preserve = False
30+ current_group_id = None
31+ has_version = False
3032
3133 for line in lines :
3234 # URL Modernization
@@ -36,7 +38,7 @@ def modernize_pom(file_path, parent_version, source_repo_name=None):
3638 repo_pattern = re .escape (source_repo_name )
3739 else :
3840 repo_pattern = r'[a-zA-Z0-9-]+'
39-
41+
4042 # Replace HTTPS URLs
4143 line = re .sub (
4244 r'https://github\.com/googleapis/' + repo_pattern ,
@@ -82,7 +84,7 @@ def modernize_pom(file_path, parent_version, source_repo_name=None):
8284 in_dep_mgmt = False
8385 new_lines .append (line )
8486 continue
85-
87+
8688 if in_dep_mgmt :
8789 if '<dependencies>' in line :
8890 in_dependencies = True
@@ -92,26 +94,39 @@ def modernize_pom(file_path, parent_version, source_repo_name=None):
9294 in_dependencies = False
9395 new_lines .append (line )
9496 continue
95-
97+
9698 if in_dependencies :
9799 if '<dependency>' in line :
98100 in_dependency = True
99101 current_dependency_lines = [line ]
100- has_x_version_update = False
102+ should_preserve = False
103+ current_group_id = None
104+ has_version = False
101105 continue
102106 if '</dependency>' in line :
103107 in_dependency = False
104108 current_dependency_lines .append (line )
105- if has_x_version_update :
109+
110+ # Preservation logic:
111+ # 1. Has x-version-update comment
112+ # 2. Is NOT com.google group AND has a version tag
113+ is_external = current_group_id and not current_group_id .startswith ('com.google' )
114+ if should_preserve or (is_external and has_version ):
106115 new_lines .extend (current_dependency_lines )
107116 continue
108-
117+
109118 if in_dependency :
110119 current_dependency_lines .append (line )
111120 if '{x-version-update:' in line :
112- has_x_version_update = True
121+ should_preserve = True
122+ if '<groupId>' in line :
123+ match = re .search (r'<groupId>(.*?)</groupId>' , line )
124+ if match :
125+ current_group_id = match .group (1 ).strip ()
126+ if '<version>' in line :
127+ has_version = True
113128 continue
114-
129+
115130 # Prune comments and extra whitespace in depMgmt for a cleaner result
116131 if not line .strip ():
117132 new_lines .append (line )
0 commit comments