in src/advisor/manifester/maven_manifester.py [0:0]
def get_dependencies(self, filename, file_object, report):
"""Get all pip dependencies declared in the pom.xml file.
Args:
filename: a str containing the filename of the file to scan
file_obj: a stream of text to scan dependencies for.
Returns:
dependency array: an array of objects of type Dependency."""
try:
maven_file = ET.parse(file_object)
project = maven_file.getroot()
dependencies = []
# get all property values from the file. they may get used in this or other file's dependency declarations
for property_node in project.findall('.//{*}properties//*'):
if property_node.text and property_node.text[0].isdigit():
matches = MavenManifester.NAME_WITHOUT_NAMESPACE_RE.search(property_node.tag)
property_name = matches.group('name')
value = property_node.text
MavenManifester.project_properties[property_name] = value
for dependency in project.findall('.//{*}dependencies//{*}dependency'):
artifact_id = dependency.find('.//{*}artifactId').text
versionElement = dependency.find('.//{*}version')
version = None
if not versionElement == None:
version = versionElement.text
# version is a variable pointing to the properties section
if version.startswith(r'${'):
# get the name from '${name}'
property_name = version[2:len(version)-1]
if property_name in self.project_properties:
version = self.project_properties[property_name]
item = Dependency(artifact_id, version, filename, 'maven')
dependencies.append(item)
return dependencies
except:
logging.error(f'Failed to parse file: {filename}.', exc_info=True)