Maven Check Versions
Is a Python package designed for analyzing Maven POM files and managing dependencies. It checks the versions of dependencies in a project and identifies the latest available versions in Maven repositories. Developed for developers, this package simplifies dependency management in Maven-based projects. It is especially useful in CI/CD environments, where maintaining consistency and up-to-date dependencies is critical.
Features
- Dependency Analysis: Parses Maven POM files to analyze dependencies and plugins.
- Version Checking: Identifies outdated dependencies and checks versions against customizable thresholds.
- Artifact Search: Finds specific artifacts using
groupId:artifactId:versionformat. - Repository Support: Integrates with HTTP-based Maven repositories, including REST services.
- Module Processing: Processes nested modules in Maven projects.
- Caching: Caches results for faster rechecks.
- Logging: Provides configurable logging for detailed analysis.
- Command-Line Interface: Easily integrates into CI/CD pipelines.
Installation
You can install the tool via pip:
pip install maven_check_versions
Usage
- Analyze a specific pom file:
maven_check_versions --pom_file <path-to-pom.xml>
- Search for a specific artifact:
maven_check_versions --find_artifact com.example:my-lib:1.0
- Enable CI mode to suppress prompts:
maven_check_versions --ci_mode
Docker image
Pull image from GitHub:
docker pull ghcr.io/alexundros/maven-check-versions
Or pull image from DockerHub:
docker pull alexundros/maven-check-versions
- Analyze a specific pom file:
docker run --rm -v '<path-to-pom.xml>:/app/pom.xml' alexundros/maven_check_versions -pf /app/pom.xml
- Search for a specific artifact:
docker run --rm alexundros/maven_check_versions -fa com.example:my-lib:1.0
- Enable CI mode to suppress prompts:
docker run --rm alexundros/maven_check_versions -ci
Command-Line Arguments
General Options
| Parameter | Short | Description | Example |
|---|---|---|---|
--ci_mode |
-ci |
Enables CI (Continuous Integration) mode. Suppresses prompts and waits for user input. | --ci_mode |
--pom_file |
-pf |
Specifies the path to the Maven POM file to process. | --pom_file path/to/pom.xml |
--find_artifact |
-fa |
Searches for a specific artifact. Provide the artifact in groupId:artifactId:version format. |
--find_artifact com.example:lib:1.0 |
Cache Control
| Parameter | Short | Description | Example |
|---|---|---|---|
--cache_off |
-co |
Disables caching to force fresh dependency checks. | --cache_off |
--cache_file |
-cf |
Specifies a custom path for the cache file. | --cache_file my_cache.json |
--cache_time |
-cf |
Specifies the cache expiration time in seconds. | --cache_time 1800 |
Logging Options
| Parameter | Short | Description | Example |
|---|---|---|---|
--logfile_off |
-lfo |
Disables logging to a file. Logs will only be shown in the terminal. | --logfile_off |
--log_file |
-lf |
Specifies the path to a custom log file. | --log_file my_log.log |
Configuration Options
| Parameter | Short | Description | Example |
|---|---|---|---|
--config_file |
-cfg |
Specifies a custom configuration file for the script. | --config_file config.cfg |
Error Handling and Validation
| Parameter | Short | Description | Example |
|---|---|---|---|
--fail_mode |
-fm |
Enables "fail mode." The script will terminate if dependency versions exceed specified thresholds. | --fail_mode |
--fail_major |
-mjv |
Specifies the major version difference threshold for failure. | --fail_major 1 |
--fail_minor |
-mnv |
Specifies the minor version difference threshold for failure. | --fail_minor 2 |
Dependency Search and Processing
| Parameter | Short | Description | Example |
|---|---|---|---|
--search_plugins |
-sp |
Includes Maven plugins in the dependency search process. | --search_plugins |
--process_modules |
-sm |
Processes modules listed in the POM file. | --process_modules |
--show_skip |
-sk |
Logs dependencies that are skipped. | --show_skip |
--show_search |
-ss |
Logs information about search actions. | --show_search |
--empty_version |
-ev |
Allows processing of dependencies without a version specified. | --empty_version |
--show_invalid |
-si |
Logs information about invalid dependencies. | --show_invalid |
Authentication
| Parameter | Short | Description | Example |
|---|---|---|---|
--user |
-un |
Specifies a username for basic authentication when accessing repositories. | --user my_username |
--password |
-up |
Specifies a password for basic authentication when accessing repositories. | --password my_password |
Configuration
You can customize the tool’s behavior using a configuration file maven_check_versions.cfg.
The following settings can be adjusted:
- SSL Verification: Enable or disable SSL verification for HTTP requests.
- Cache Preferences: Control cache duration and behavior.
- Repository Settings: Define base URLs, authentication, and paths for repositories.
- Logging Preferences: Specify log levels and file paths.
Example configuration
[base]
cache_off = false
cache_time = 600
fail_mode = false
fail_major = 0
fail_minor = 0
plugins = false
modules = false
show_skip = false
show_search = false
empty_version = false
show_invalid = false
skip_version = true
user = USER
password = PASSWORD
[pom_http]
auth = true
[urllib3]
warnings = true
[requests]
verify = true
[pom_files]
pom-name = <path-to-pom.xml>
[repositories]
Central (repo1.maven.org) = repo1.maven
[repo1.maven]
base = https://repo1.maven.org
path = maven2
auth = false
License
This project is licensed under the MIT License. See the LICENSE file for more details.
Metadata
Release files for maven-check-versions 0.0.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| maven_check_versions-0.0.7.tar.gz | 16.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| maven_check_versions-0.0.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.7 kB
Release files / maven_check_versions-0.0.7.tar.gz
| Download URL | maven_check_versions-0.0.7.tar.gz |
|---|---|
| Size | 16.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e763dd61d4b5956d92cca00368df5ee21a080942b45362e27bb7859d215c1a09
|
|
BLAKE2b-256 checksum How to use checksums |
631b26ee52e6b91b3df4c8375f384df4dda411a174653c089aa2e2e602ecf126
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.10.10
|
Release files / maven_check_versions-0.0.7-py3-none-any.whl
| Download URL | maven_check_versions-0.0.7-py3-none-any.whl |
|---|---|
| Size | 16.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7ea75112abfeb120de2d80569c2521361b721e13c7eb498f3518da55d1f5e7c5
|
|
BLAKE2b-256 checksum How to use checksums |
546bb0927d86b4301c6df952b33fb0fe9b3ea56c0ba6ccfa617c8bc574be66a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.10.10
|