Как заставить IvyArtifactRepository читать из файла `pom`? - PullRequest
0 голосов
/ 07 апреля 2020

Я работаю над устаревшим проектом, который работает с артефактами, созданными плющом. Есть некоторый пользовательский код, который корректирует содержимое хранилища динамически. Код выглядит примерно так:

Обработчик происходит от -> 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. Так что все переходные зависимости загружаются и все работает. Надеюсь, я объяснил проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...