A groovy-application which helps to release a tree of dependent maven-projects, updating the referenced dependencies and parent along the ways thru the found project-graph.
- The application will search in the projects-dir for all maven projects.
- It traverses the given project and all dependents found in the graph which are affected
- Determines the order of projects to be released, depending on the start-project
- Verifies that each project is up-to-date with git, in the master branch and not dirty
- Releases the projects. Updates the dependencies of released projects upfront. Stores the progress to continue if a release breaks.
- git, maven and java are in the PATH.
- All projects are located in the same directory (
-p
argument) - Project Object Model file is named
pom.xml
- Each xml-tag from the pom.xml is written in its own line (eg.
<dependencies>
or<version>1.2.3</version>
) - parent-hierarchies only have limited support (eg. when derived parents depend on other dependencies which depend on other parents is not supported)
- maven submodules/multi-module projects are not supported
- Version follows Semver
cascade-release -p <PROJECTS_DIR> -s <START-PROJECT>
-i
Define the version increment, possible values are:major
,minor
&patch
(default)-g
Only projects with the groupId of the start-project will be analyzed, additional groupIds can be passed comma-separated using this argument.-u
Will not release projects with the given groupId, only the dependencies in the pom file will get updated instead.-h
Print the usage help
cascade-release -p $HOME/workspace -s my-lib