 | Это python пакет, предназначенный для анализа Maven pom файлов.
Он проверяет версии зависимостей в проекте и определяет последние доступные версии в репозиториях
и особенно полезен в средах CI/CD, где важно поддерживать согласованность и актуальность зависимостей. Подробнее на Github |
Возможности
- Анализ зависимостей: Парсит файлы POM Maven для анализа зависимостей и плагинов.
- Проверка версий: Определяет устаревшие зависимости и сверяет версии с настраиваемыми порогами.
- Поиск артефактов: Находит конкретные артефакты в формате
groupId:artifactId:version
. - Поддержка репозиториев: Интеграция с HTTP-репозиториями Maven, включая REST-сервисы.
- Обработка модулей: Обрабатывает вложенные модули в проектах Maven.
- Кэширование: Кэширует результаты для ускорения повторных проверок, поддерживает разные бэкенды кэша.
- Логирование: Предоставляет настраиваемое логирование для детального анализа.
- Интерфейс командной строки: Легко интегрируется в конвейеры CI/CD.
- Проверка на уязвимости: Проверяет зависимости на известные уязвимости с помощью OSS Index.
Установка
Требования: Python 3.10 или выше.
Установите пакет через pip:
1
| pip install maven_check_versions
|
Использование
- Анализ конкретного POM-файла:
1
| maven_check_versions --pom_file path/to/pom.xml
|
- Поиск конкретного артефакта:
1
| maven_check_versions --find_artifact com.example:my-lib:1.0
|
- Включение режима CI (без подтверждений):
1
| maven_check_versions --ci_mode
|
Docker-образы
Загрузка из GitHub:
Базовый образ:
1
| docker pull ghcr.io/alexundros/maven-check-versions
|
Образ на основе PyPy:
1
| docker pull ghcr.io/alexundros/maven-check-versions:pypy
|
Загрузка из DockerHub:
Базовый образ:
1
| docker pull alexundros/maven-check-versions
|
Образ на основе PyPy:
1
| docker pull alexundros/maven-check-versions:pypy
|
Использование:
1
| docker run --rm -v 'path/to/pom.xml:/app/pom.xml' alexundros/maven_check_versions -pf /app/pom.xml
|
1
| docker run --rm alexundros/maven_check_versions -fa com.example:my-lib:1.0
|
- Режим CI без подтверждений:
1
| docker run --rm alexundros/maven_check_versions -ci
|
Аргументы командной строки
Общие параметры
Параметр | Кратко | Описание | Пример |
---|
--ci_mode | -ci | Включает режим CI (без подтверждений). | --ci_mode |
--pom_file | -pf | Указывает путь к обрабатываемому POM-файлу. | --pom_file path/to/pom.xml |
--find_artifact | -fa | Поиск конкретного артефакта. Формат: groupId:artifactId:version . | --find_artifact com.example:lib:1.0 |
--config_file | -cfg | Указывает файл конфигурации для скрипта. | --config_file config.yml |
--log_level | -ll | Уровень логирования. | --log_level debug |
Управление кэшем
Параметр | Кратко | Описание | Пример |
---|
--cache_off | -co | Отключает кэш для принудительной свежей проверки зависимостей. | --cache_off |
--cache_file | -cf | Указывает путь к файлу кэша (только для JSON-бэкенда). | --cache_file cache.json |
--cache_time | -ct | Время жизни кэша в секундах. | --cache_time 1800 |
--cache_backend | -cb | Бэкенд кэша: json , redis , tarantool , memcached . | --cache_backend redis |
Redis кэш
Параметр | Кратко | Описание | Пример |
---|
--redis_host | -rsh | Хост Redis (по умолчанию: localhost). | --redis_host redis |
--redis_port | -rsp | Порт Redis (по умолчанию: 6379). | --redis_port 6379 |
--redis_key | -rsk | Ключ в Redis (по умолчанию: maven_check_versions_cache). | --redis_key mycache |
--redis_user | -rsu | Пользователь Redis (необязательно). | --redis_user user |
--redis_password | -rsup | Пароль Redis (необязательно). | --redis_password pass |
Параметр | Кратко | Описание | Пример |
---|
--tarantool_host | -tlh | Хост Tarantool (по умолчанию: localhost). | --tarantool_host tarantool |
--tarantool_port | -tlp | Порт Tarantool (по умолчанию: 3301). | --tarantool_port 3301 |
--tarantool_space | -tls | Пространство Tarantool (по умолчанию: maven_check_versions_cache). | --tarantool_space myspace |
--tarantool_user | -tlu | Пользователь Tarantool (необязательно). | --tarantool_user user |
--tarantool_password | -tlup | Пароль Tarantool (необязательно). | --tarantool_password pass |
Memcached кэш
Параметр | Кратко | Описание | Пример |
---|
--memcached_host | -mch | Хост Memcached (по умолчанию: localhost). | --memcached_host memcached |
--memcached_port | -mcp | Порт Memcached (по умолчанию: 11211). | --memcached_port 11211 |
--memcached_key | -mck | Ключ в Memcached (по умолчанию: maven_check_versions_cache). | --memcached_key mycache |
Параметры логирования
Параметр | Кратко | Описание | Пример |
---|
--logfile_off | -lfo | Отключает логирование в файл. Логи выводятся только в консоль. | --logfile_off |
--log_file | -lf | Указывает путь к файлу логов. | --log_file my_log.log |
Обработка ошибок и валидация
Параметр | Кратко | Описание | Пример |
---|
--fail_mode | -fm | Включает режим “отказа”: скрипт завершится при превышении порога версий. | --fail_mode |
--fail_major | -mjv | Порог по основной версии для отказа. | --fail_major 1 |
--fail_minor | -mnv | Порог по младшей версии для отказа. | --fail_minor 2 |
Поиск и обработка зависимостей
Параметр | Кратко | Описание | Пример |
---|
--search_plugins | -sp | Включает поиск плагинов Maven в процессе анализа зависимостей. | --search_plugins |
--process_modules | -sm | Обрабатывает модули, указанные в POM-файле. | --process_modules |
--show_skip | -sk | Выводит пропущенные зависимости. | --show_skip |
--show_search | -ss | Логирует действия поиска зависимостей. | --show_search |
--empty_version | -ev | Разрешает обработку зависимостей без указанной версии. | --empty_version |
--show_invalid | -si | Логирует информацию о некорректных зависимостях. | --show_invalid |
Параметры производительности
Параметр | Кратко | Описание | Пример |
---|
--threading | -th | Включает многопоточность для параллельной обработки зависимостей. | --threading |
--max_threads | -mt | Максимальное число потоков при включенной многопоточности. | --max_threads 8 |
Аутентификация
Параметр | Кратко | Описание | Пример |
---|
--user | -un | Имя пользователя для базовой аутентификации при доступе к репозиториям. | --user my_username |
--password | -up | Пароль для базовой аутентификации при доступе к репозиториям. | --password my_password |
Конфигурация
Поведение инструмента можно настроить через файл конфигурации
maven_check_versions.yml
.
Доступные настройки:
- Проверка SSL: Включение или отключение проверки SSL при HTTP-запросах.
- Настройки кэша: Управление временем жизни и поведением кэша.
- Настройки репозиториев: Задание базовых URL, аутентификации и путей для репозиториев.
- Настройки логирования: Уровни и пути для логов.
- Проверка уязвимостей: Настройка проверки зависимостей на известные уязвимости.
Настройки кэша
Инструмент поддерживает несколько бэкендов кэша:
- JSON (по умолчанию): локальный JSON-файл.
- Redis: сервер Redis.
- Tarantool: сервер Tarantool.
- Memcached: сервер Memcached.
Настройки проверки уязвимостей
Для включения проверки уязвимостей установите oss_index_enabled: true
в разделе vulnerability
конфигурационного файла.
Инструмент использует сервис OSS Index для обнаружения известных уязвимостей. Понадобятся имя пользователя и токен API, которые можно получить после регистрации на
https://ossindex.sonatype.org/.
Пример конфигурации:
- Проверять все зависимости через OSS Index
- Останавливать сборку, если CVSS ≥ 7.0
- Пропускать тестовые компоненты
1
2
3
4
5
6
7
8
9
10
11
| vulnerability:
oss_index_enabled: true
oss_index_url: "https://ossindex.sonatype.org/api/v3/component-report"
oss_index_user: "OSS_INDEX_USER"
oss_index_token: "OSS_INDEX_TOKEN"
oss_index_batch_size: 128
oss_index_keep_safe: false
fail_score: 7
skip_no_versions: false
skip_checks: [ "junit:junit:*" ]
cache_backend: "json"
|
Файл конфигурации
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
| base:
cache_off: false
cache_time: 600
cache_backend: "json"
# Настройки Redis кэша
redis_host: "localhost"
redis_port: 6379
redis_key: "maven_check_versions_artifacts"
redis_user: null
redis_password: null
# Настройки Tarantool кэша
tarantool_host: "localhost"
tarantool_port: 3301
tarantool_space: "maven_check_versions_artifacts"
tarantool_user: null
tarantool_password: null
# Настройки Memcached кэша
memcached_host: "localhost"
memcached_port: 11211
memcached_key: "maven_check_versions_artifacts"
fail_mode: false
fail_major: 0
fail_minor: 0
search_plugins: false
process_modules: false
show_skip: false
show_search: false
empty_version: false
show_invalid: false
skip_version: true
threading: false
max_threads: 8
user: "USER"
password: "PASSWORD"
# Настройки проверки уязвимостей
vulnerability:
oss_index_enabled: true
oss_index_url: "https://ossindex.sonatype.org/api/v3/component-report"
oss_index_user: "OSS_INDEX_USER"
oss_index_token: "OSS_INDEX_TOKEN"
oss_index_batch_size: 128
oss_index_keep_safe: false
fail_score: 0
cve_reference: false
skip_no_versions: false
skip_checks: []
cache_backend: "json"
# Настройки Redis для проверки уязвимостей
redis_host: "localhost"
redis_port: 6379
redis_key: "maven_check_versions_vulnerabilities"
redis_user: null
redis_password: null
# Настройки Tarantool для проверки уязвимостей
tarantool_host: "localhost"
tarantool_port: 3301
tarantool_space: "maven_check_versions_vulnerabilities"
tarantool_user: null
tarantool_password: null
# Настройки Memcached для проверки уязвимостей
memcached_host: "localhost"
memcached_port: 11211
memcached_key: "maven_check_versions_vulnerabilities"
# Настройки HTTP-доступа к POM
pom_http:
auth: true
# Настройки urllib3
urllib3:
warnings: true
# Настройки requests
requests:
verify: true
# Список POM-файлов для обработки
pom_files:
pom-name: "path/to/pom.xml"
# Конфигурации репозиториев
repositories:
"Central (repo1.maven.org)": "repo1_maven"
# Настройки для repo1.maven
repo1_maven:
base: "https://repo1.maven.org"
path: "maven2"
auth: false
repo: "maven2"
service_rest: false
|
Переменные окружения
Инструмент поддерживает переменные окружения для переопределения настроек или предоставления учетных данных.
Формат: CV_<KEY>
где <KEY>
соответствует ключу конфигурации раздела base
.
Переменная | Описание | Пример |
---|
CV_CACHE_OFF | Отключает кэш при установке в true . | true |
CV_CACHE_TIME | Время жизни кэша в секундах. | 3600 |
CV_FAIL_MODE | Включает режим отказа при установке true . | true |
CV_FAIL_MAJOR | Устанавливает порог по основной версии. | 1 |
CV_FAIL_MINOR | Устанавливает порог по младшей версии. | 2 |
CV_SEARCH_PLUGINS | Включает поиск плагинов при установке true . | true |
CV_PROCESS_MODULES | Включает обработку модулей при установке true . | true |
CV_SHOW_SKIP | Логирует пропущенные зависимости при true . | true |
CV_SHOW_SEARCH | Логирует действия поиска при true . | true |
CV_EMPTY_VERSION | Разрешает пустые версии при true . | true |
CV_SHOW_INVALID | Логирует некорректные зависимости при true . | true |
CV_THREADING | Включает многопоточность при true . | true |
CV_MAX_THREADS | Максимальное число потоков при многопоточности. | 8 |
CV_USER | Пользователь для аутентификации в репозиториях. | my_username |
CV_PASSWORD | Пароль для аутентификации в репозиториях. | my_password |
Другие разделы формируются как CV_<SECTION>_<KEY>
.
Пример использования
1
2
| export CV_CACHE_TIME=1800
maven_check_versions --pom_file path/to/pom.xml
|
Лицензия
Этот проект распространяется под лицензией MIT. Подробнее см. файл
LICENSE
.