Nástroj pro správu verzí multimodulárních Maven projektů

Abstract

In this bachelor’s thesis, the author designs and implements a tool for version management of multi-module Maven projects. The main goal is to automate a previously time-consuming task – increasing the version of a single module and propagating this change to all related dependencies. At the core of the solution is an internal representation of the entire multi-module project: for each module, its groupId, artifactId, version, and all direct declarations from the <dependencies> and <dependencyManagement> sections of the POM files are stored. Transitive dependencies are computed by the application, inserted into the same model, and subsequently processed as if they were declared explicitly. The system is built as an extensible Java application using Maven Invoker and the org.codehaus.mojo:versions plugin, with each feature (e.g., identifying outdated libraries, bulk version upgrades) implemented as an independent service. The reference implementation exposes a REST API (with Swagger UI) offering operations for loading the project structure, analyzing outdated internal and external libraries and automatically increasing the version of a selected module (including updating all its references). The practical usefulness of the tool is demonstrated on a publicly available open-source project, where the automated workflow successfully updates dependencies with a single click, replacing what was previously a manual process.

Description

Subject(s)

Maven, Java, Multi-module project

Citation