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.ktsfile to include all Micronaut projects you want to include in the report. It is possible to checkout a particular branch by adding@branchat the end of the project identifier. - Run
./gradlew allReports: this will checkout all Micronaut projects in thecheckoutsdirectory and generate one report per project, in thebuild/reportsdirectory. This report contains the dependencies of the project. - Run
./gradlew graphBuilderto 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