Skip to content

Glavo/module-info-compiler

Repository files navigation

Module Info Compiler

A tool for compiling module-info.java for Java alone.

It can easily compile module-info.java for your Java 8 project to fit JPMS without complicated module path configuration.

It can be used as a dependency library, as a command line tool, or as a Gradle plugin.

It only parses the syntax of module-info.java without checking the actual module, so it compiles without configuring the module path.

This tool does not depend on javac, it can run on Java 8 or higher, and you can configure the major version of the target class file.

Usage

Gradle Plugin

Using the plugins:

Groovy DSL:

plugins {
  id "org.glavo.compile-module-info-plugin" version "2.0"
}

Kotlin DSL:

plugins {
  id("org.glavo.compile-module-info-plugin") version "2.0"
}

It takes over compiling module-info.java, so you can easily mix module-info.java in your Java 8 project.

You can also do some configuration like this:

tasks.named<org.glavo.mic.tasks.CompileModuleInfo>("compileModuleInfo") {
    targetCompatibility     = 9             // Optional, defaults to 9
    encoding                = "UTF-8"       // Optional, defaults to UTF-8
    moduleVersion           = "1.0.0"       // Optional
    moduleMainClass         = "simple.Main" // Optional
}

Here is a sample project: Glavo/compile-module-info-sample

Use as a CLI tool

Download the jar from the release page, run it with java -jar module-info-compiler.jar.

The parameters it accepts are as follows:

Usage: gmic [-target <target compatibility>] [-main-class <module main class>] [-module-version <module version>] <source file> <target file>

Added as a Maven dependency

This tool has been published on Maven Central, you can add dependencies to it like this:

Maven:

<dependency>
    <groupId>org.glavo</groupId>
    <artifactId>module-info-compiler</artifactId>
    <version>2.0</version>
</dependency>

Gradle:

implementation("org.glavo:module-info-compiler:2.0")