2017-02-23 65 views
0

Сценарий: Новая политика предприятия запрещает использование публичных репозиториев. Для каждой используемой зависимости (которая очень много) мы должны предоставить команде devOps группу артефактов, идентификатор, версию и из какого репозитория он пришел.Найдите исходный репозиторий каждой зависимости в maven

Мы использовали более одного внешнего репозитория на нашей базе кода. Поскольку все артефакты теперь находятся в локальном репозитории, мы не знаем, откуда они пришли.

То, что я был в состоянии сделать:

я могу использовать МВНЫ зависимости: список -DoutputAbsoluteArtifactFilename = истинный -DprependGroupId по каждому проекту, чтобы получить артефакт группы, идентификатор, версию.

И МВН зависимость: список-хранилища, чтобы получить хранилища, используемые в этом проекте

Чего не хватает:

Знающий, который артефакта с какого репозитория.

Заранее спасибо

ответ

0

Я боюсь, что это не будет возможно в мавена. До maven 3.0.x maven даже не отслеживал удаленные репозитории. После Maven 3.0.x он перешел в eclipse ethernet. Eclipse создаёт файл _remote.repositories для каждого репозитория, который имеет информацию о репозитории. Он содержит идентификатор репозитория, который определен в файле settings.xml. Вы можете,

  1. Удалить местное содержимое репо.
  2. Выполнить следующую команду,

    find . -name _remote.repositories -exec grep "^[^#;]" {} \; > repo_info.txt 
    

Это по крайней мере даст вам отображение.

+0

** Отличный ответ **. Спасибо. Я в конечном итоге определял репозиции вручную, в соответствии с идентификатором группы каждой зависимости (например, 700, это заняло некоторое время> _ <). Если dev ops раздражает, я пойду с этим. –

0

Содержит список всех внешних репозиториев, которые вы используете. Кроме того, возьмите список всех файлов groupId, artifactId, version (либо по dependency:list каждого проекта, либо путем сканирования локального репозитория). Теперь для каждой зависимости запросите внешние репозитории через REST, если они содержат эту зависимость.

Если вы начинаете с MavenCentral, у вас есть высокая вероятность, что вы найдете свою зависимость в первую очередь.

+0

Большое спасибо. Я обязательно пойду с этим путем, если у devOps возникнет проблема только с несколькими зависимостями. Вы знаете, как сделать запрос REST? У меня есть завиток и wget, но любой другой инструмент тоже будет работать. –