94 lines
3.7 KiB
Markdown
94 lines
3.7 KiB
Markdown
## Overview
|
|
This plugin will add a new task to your gradle projects, the `jpms-check` task, to help you to check how easily
|
|
whether you can start using [JPMS](http://openjdk.java.net/projects/jigsaw/) in your project and which one of your dependencies you will need to update or patch
|
|
to make them JPMS-friendly
|
|
|
|
### The *jpms-check* task
|
|
The `jpms-check` task will scan through all of your project dependencies and create a document where, for
|
|
each of them, it will be reported whether they contain a module descriptor (aka `module-info.class`) or
|
|
an `Automatic-Module-Name` entry in the manifest or if the jar is a
|
|
[Multi-Release JAR file](https://openjdk.java.net/jeps/238).
|
|
Note that artifacts that do not meet any of these requirements can still be used with JPMS,
|
|
but, using the standard module finder, the module's name will be inferred from the jar file name
|
|
(with [some tweaks](https://docs.oracle.com/javase/9/docs/api/java/lang/module/ModuleFinder.html#automatic-modules)
|
|
to try exclude the version number and the artifact classifier) which is not a very reliable option.
|
|
|
|
## 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.jpms-check" version "0.1"
|
|
}
|
|
```
|
|
|
|
or to your `build.gradle.kts` if you prefer the Gradle Kotlin DSL
|
|
|
|
```kotlin
|
|
plugins {
|
|
id("net.woggioni.plugins.jpms-check") 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:jpms-check:0.1"
|
|
}
|
|
}
|
|
|
|
allprojects {
|
|
apply plugin: net.woggioni.plugins.jpms.check.JPMSCheckPlugin
|
|
}
|
|
```
|
|
|
|
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
|
|
`jpms-check` task, so it is relatively safe to do so.
|
|
|
|
## Configure the plugin
|
|
|
|
The `jpms-check` will by default create a `jpms-report.html` file in the build directory of the Gradle project
|
|
where it is invoked. that is a fully self contained HTML document that can easily be opened wit ha web browser without
|
|
the need of a web server. The behaviour can be customized using some Gradle properties.
|
|
|
|
### Parameters description
|
|
|
|
- `jpms-check.outputFormat` will change the format of the generated report,
|
|
at the moment only `html` and `json` are supported (the json report contains the same data of the html report,
|
|
but instead of an HTML table, it generates an array of JSON objects containing the same data).
|
|
|
|
- `jpms-check.outputFile` will set the path and the name of the generated output file.
|
|
The default is a file in the build directory named `jpms-report.html` if the `html` format is chosen or
|
|
`jpms-report.json` otherwise.
|
|
|
|
- `jpms-check.recursive` if this property is set to `true` the plugin will recursively analyze all the subprojects
|
|
of the project where it is invoked and merge the results in a single report file (the default value of this property is
|
|
`false`)
|
|
|
|
- `jpms-check.configurationName` the name of the Gradle configuration whose dependencies will be analyzed,
|
|
it defaults to the `default` configuration.
|
|
|
|
|
|
#### Example usage
|
|
Call the `jpms-check` task to analyze all of the dependencies in the current project and all of its
|
|
subproject and create a JSON report with the result in `/tmp/report.json`
|
|
```bash
|
|
gradle -Pjpms-check.recursive=true -Pjpms-check.outputFormat=json -Pjpms-check.outputFile=/tmp/report.json jpms-check
|
|
```
|