Я работаю над устаревшим проектом, который работает с артефактами, созданными плющом. Есть некоторый пользовательский код, который корректирует содержимое хранилища динамически. Код выглядит примерно так:
Обработчик происходит от -> project.repositories { RepositoryHandler handler ->
handler.matching { !(it in [someOldRepo, someNewRepo]) }.all { ArtifactRepository repo ->
repo.content { content ->
// custom code
BrokenArtifacts.someBrokenArtifacts.each {
content.excludeVersion(it.group, it.name, it.version)
}
}
}
Этот пользовательский код работает, когда я использую ivyArtifactRepository:
def myReposOnly = handler.ivy { IvyArtifactRepository repo ->
repo.name = 'myReposOnly'
repo.url = myReposUrl
repo.patternLayout { IvyPatternRepositoryLayout pattern ->
pattern.artifact "[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"
pattern.m2compatible = true
}
repo.content { content ->
content.includeGroup("myCustomGroup")
}
}
Но проблема с этим кодом в том, что он не может загрузить транзитивную зависимость этого артефакта. Это связано с тем, что артефакт использует файл .pom
. И он ожидает, что метаданные будут присутствовать в файле ivy.xml
.
Кроме того, я попытался использовать следующий код:
def myReposOnly = handler.maven { MavenArtifactRepository repo ->
repo.metadataSources {
it.mavenPom()
}
repo.name = 'myReposOnly'
repo.url = myReposUrl
repo.content { content ->
content.includeGroup("MyGroup")
}
}
Таким образом, переходные зависимости загружаются с помощью вышеупомянутого код, но поврежденные артефакты не разрешаются во время выполнения.
Я надеюсь на решение, в котором я смогу использовать блок IvyArtifactRepository с файлом .pom
. Так что все переходные зависимости загружаются и все работает. Надеюсь, я объяснил проблему.