Переглянути джерело

Fix resolving of BOM dependencyManagement

wip/gradle-reposilite
Sindre Stephansen 2 роки тому
джерело
коміт
f2a43d0941
Підписано: sindre <sindre@sindrestephansen.com> Ідентифікатор GPG ключа: B06FC67D17A46ADE
1 змінених файлів з 31 додано та 15 видалено
  1. +31
    -15
      sync/generate-gradle.py

+ 31
- 15
sync/generate-gradle.py Переглянути файл

@@ -48,6 +48,9 @@ class WaitForPackage(Exception):
def __init__(self, package):
self.package = package

def find_tag_text(parent, tag) -> str | None:
elem = parent.find(tag, ns)
return elem.text if elem is not None else None

class PackagePOM:
def __init__(self, package: 'Package', pom: str):
@@ -59,12 +62,9 @@ class PackagePOM:
self.parent: Package | None = None

if (parent_tag := self.raw_root.find('parent', ns)) is not None:
parent_group_tag = parent_tag.find('groupId', ns)
parent_artifact_tag = parent_tag.find('artifactId', ns)
parent_version_tag = parent_tag.find('version', ns)
parent_group = parent_group_tag.text if parent_group_tag is not None else None
parent_artifact = parent_artifact_tag.text if parent_artifact_tag is not None else None
parent_version = parent_version_tag.text if parent_version_tag is not None else None
parent_group = find_tag_text(parent_tag, 'groupId')
parent_artifact = find_tag_text(parent_tag, 'artifactId')
parent_version = find_tag_text(parent_tag, 'version')

logger.debug(f'{package}: Parsing parent {parent_group}:{parent_artifact}:{parent_version}')

@@ -97,16 +97,32 @@ class PackagePOM:

self.gradle_packages = [str(package)]

if self.packaging == 'pom':
root_copy = copy.deepcopy(self.raw_root)
dependencies = root_copy.find('dependencies', ns) or ET.SubElement(root_copy, 'dependencies')
if self.is_bom:
logger.debug(f'{package}: Parsing dependencyManagement')

self.gradle_packages.extend(
[
f'{dep.find("groupId").text}:{dep.find("artifactId").text}:{dep.find("version").text}'
for dep in dependencies.findall('dependency')
]
)
if (dependencyManagement := self.raw_root.find('dependencyManagement', ns)):
if (dependencies := dependencyManagement.find('dependencies', ns)):
packages = []

for dep in dependencies.findall('dependency', ns):
groupId = find_tag_text(dep, 'groupId')
artifactId = find_tag_text(dep, 'artifactId')
version = find_tag_text(dep, 'version')


if groupId is not None and artifactId is not None and version is not None:
groupId = self.prop_replace(groupId)
artifactId = self.prop_replace(artifactId)
version = self.prop_replace(version)
packages.append(f'{groupId}:{artifactId}:{version}')

logger.debug(f'{package}: Adding {len(packages)} package(s) from dependencyManagement')

self.gradle_packages.extend(packages)
else:
logger.warn(f'{package}: dependencyManagement has no dependencies')
else:
logger.warn(f'{package}: BOM has no dependencyManagement')

logger.debug(f'{package}: POM parsed')



Завантаження…
Відмінити
Зберегти