This project is responsible for generating the dependency graph of the Micronaut projects.
It is aimed at facilitating the release process, by determining in which order the projects should be built and published.
For example, if micronaut-foo
depends on micronaut-bar
and micronaut-core
, then it will tell us that bar
and core
needs to be built first, then foo
.
The report tool is capable of determining cycles between projects, which will prevent from releasing.
We also generate a webpage for viewing the outputs, the latest of which can be seen at https://micronaut-projects.github.io/module-dependency-graph/
The output of this project will be found in the build/graph
directory.
It consists of:
- a full graph of the dependencies between the projects
- a simplified graph of the dependencies which excludes
core
(because all projects transitively depend on core) - one graph per Micronaut project with its transitive Micronaut dependencies
The tool works by looking at the groupId of each project, so if 2 projects share the same groupId, the result is going to be wrong. This should be considered an error, though.
- Edit the
build.gradle.kts
file to include all Micronaut projects you want to include in the report. It is possible to checkout a particular branch by adding@branch
at the end of the project identifier. - Run
./gradlew allReports
: this will checkout all Micronaut projects in thecheckouts
directory and generate one report per project, in thebuild/reports
directory. This report contains the dependencies of the project. - Run
./gradlew graphBuilder
to generate the dependency graph
There is no hard dependency between the 2 tasks in order to avoid having to checkout all projects when testing the graph builder, but you can execute both at once: ./gradlew allReports graphBuilder