in setup.py [0:0]
def parse_packages_from_pom(self):
maven_root = ET.parse(self.packages_file).getroot()
maven_version = '{http://maven.apache.org/POM/4.0.0}'
# dictionary of common package versions encoded in `properties` section
properties = {f"${{{child.tag.replace(maven_version, '')}}}": child.text
for child in maven_root.find(f'{maven_version}properties').iter() if 'version' in child.tag}
packages = []
for dep in maven_root.iter(f'{maven_version}dependency'):
dependency = []
for attr in ['groupId', 'artifactId', 'version']:
val = dep.find(maven_version + attr).text
if val in properties:
dependency.append(properties[val])
else:
dependency.append(val)
packages.append(tuple(dependency))
return packages