added documentation
This commit is contained in:
142
README.md
Normal file
142
README.md
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
## Overview
|
||||||
|
This plugin will add 2 new tasks to your gradle projects
|
||||||
|
|
||||||
|
### The *exportDependencies* task
|
||||||
|
The `exportDependencies` task will simply create a `.dot` file that contains your project's dependency graph,
|
||||||
|
this task does not depend on anything and will succeed even if you don't have
|
||||||
|
[Graphviz](https://www.graphviz.org) installed.
|
||||||
|
|
||||||
|
### The *renderDependencies* task
|
||||||
|
This task will invoke the `exportDependencies` task and then call Graphviz to create an visual
|
||||||
|
representation of your dependency graph. Since this task invokes `Graphviz` directly,
|
||||||
|
having it installed and available in your `PATH` is a requirement.
|
||||||
|
|
||||||
|
## Install the plugin
|
||||||
|
|
||||||
|
Checkout this project and in the root folder run
|
||||||
|
```bash
|
||||||
|
./gradlew publishToMavenLocal
|
||||||
|
```
|
||||||
|
to install it to your local machine's Maven repository.
|
||||||
|
|
||||||
|
## Add the plugin to your project
|
||||||
|
|
||||||
|
Add this plugin to you project simply adding it to your projects `build.gradle`
|
||||||
|
```groovy
|
||||||
|
plugins {
|
||||||
|
id "net.woggioni.plugins.dependency-export" version "0.1"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
or to your `build.gradle.kts` if you prefer the Gradle Kotlin DSL
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
plugins {
|
||||||
|
id("net.woggioni.plugins.dependency-export") version "0.1"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also enable it globally on your machine just create a `~/.gradle/init.gradle` file with this content
|
||||||
|
|
||||||
|
```groovy
|
||||||
|
initscript {
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
mavenCentral()
|
||||||
|
jcenter()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
classpath "net.woggioni.plugins:dependency-export:0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
allprojects {
|
||||||
|
apply plugin: net.woggioni.plugins.DependencyExportPlugin
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
this means that the plugin will be automatically enabled for all your Gradle projects,
|
||||||
|
note that it doesn't alter the build process in any way except for creating the
|
||||||
|
`renderDependency` and `exportDependencies` tasks, so it's relatively safe to do so.
|
||||||
|
|
||||||
|
If you need more information, the `sample` folder contains a basic Gradle project using the plugin,
|
||||||
|
using both Groovy and Kotlin DSL.
|
||||||
|
|
||||||
|
## Configure the plugin
|
||||||
|
|
||||||
|
This is the default configuration for both tasks using Groovy DSL
|
||||||
|
|
||||||
|
```groovy
|
||||||
|
exportDependencies {
|
||||||
|
configurationName = 'default'
|
||||||
|
outputFile = 'dependencies.dot'
|
||||||
|
}
|
||||||
|
|
||||||
|
renderDependencies {
|
||||||
|
format = 'xlib'
|
||||||
|
outputFile = 'renderedDependencies'
|
||||||
|
graphvizExecutable = 'graphviz'
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
and using Kotlin DSL
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
import net.woggioni.plugins.ExportDependenciesPluginExtension
|
||||||
|
import net.woggioni.plugins.RenderDependenciesPluginExtension
|
||||||
|
|
||||||
|
configure<ExportDependenciesPluginExtension> {
|
||||||
|
configurationName = "default"
|
||||||
|
outputFile = "dependencies.dot"
|
||||||
|
}
|
||||||
|
|
||||||
|
configure<RenderDependenciesPluginExtension> {
|
||||||
|
format = "xlib"
|
||||||
|
outputFile = "renderedDependencies"
|
||||||
|
graphvizExecutable = "graphviz"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
any configuration parameter can be overridden in your `build.gradle` (or `build.gradle.kts`) file
|
||||||
|
or using its correspondent Gradle's [project properties](https://docs.gradle.org/current/userguide/build_environment.html#sec:project_properties).
|
||||||
|
For example to override the output format of the `renderDependencies` task from the CLI:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gradle -PrenderDependencies.format=svg renderDependencies
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameter description
|
||||||
|
|
||||||
|
- `exportDependencies.configurationName` will select the Gradle's configuration
|
||||||
|
(that word you put in the `dependencies` section of your build before `groupId:artifactId:versionId` tuple)
|
||||||
|
that will be represented in the graph
|
||||||
|
- `exportDependencies.outputFile` will specify the location of the generated `.dot` file
|
||||||
|
(note that if a relative path is provided, it will be interpreted as relative to the project's build directory)
|
||||||
|
- `renderDependencies.format` will specify the format of the file generated by Graphviz.
|
||||||
|
The default output format is `xlib` which, on a linux machine with a GUI, will open
|
||||||
|
a window with an interactive (with zoom and pan) view of your dependencies (this is a special format that
|
||||||
|
will not output any file). Otherwise you can choose between any other output format supported by Graphviz,
|
||||||
|
refer to [its official documentation](https://graphviz.gitlab.io/_pages/doc/info/output.html) for more details.
|
||||||
|
- `renderDependencies.outputFile` will specify the location of the generated file (note that if a
|
||||||
|
relative path is provided, it will be interpreted as relative to the project's build directory)
|
||||||
|
- `renderDependencies.graphvizExecutable` will set the executable that will be launched to invoke
|
||||||
|
Graphviz so that, if you have it installed in an exotic location outside of your `PATH` or, for
|
||||||
|
any reason, you renamed it in some way, you can configure it here.
|
||||||
|
|
||||||
|
## And finally use it!
|
||||||
|
|
||||||
|
Just run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gradle exportDependencies
|
||||||
|
```
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gradle renderDependencies
|
||||||
|
```
|
||||||
|
|
||||||
|
and enjoy the mess of your horrible dependency thornbush.
|
||||||
|
Now ask yourself if you really need that neural network framework for
|
||||||
|
[your FizzBuzz project](https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition).
|
Reference in New Issue
Block a user