Gradle Application Plugin
External
Internal
Overview
The application plugin facilitates creating an executable JVM application. It bundles all application JARS, transitive dependencies and operating system specific scripts into a TAR or ZIP file, and it also generates the bash and Windows wrapper scripts to run the application with. The plugin also allows executing the application from the project's work area with the "run" task.
Typical Setup
This setup describes configuration of a multi-project build, whose sub-project create various components of the application and the top level project bundles all those in a distributable artifact. The dependencies between the sub-projects must be configured in the corresponding build.gradle files. To build the application artifact, we assume that there's a sub-project that contains the "main()" static method that triggers the execution, that method exists in "io.example.Main" class, and the sub-project in question is named "main".
As such, the top-level project build.gradle should contain the following relevant configuration:
...
apply plugin: 'application'
mainClassName = "io.example.Main"
dependencies {
...
implementation project(':main')
}
Provided that the rest of the dependencies between sub-projects are correctly declared in the corresponding build.gradle files, the execution of
gradle distZip
will compile everything and will create a ./build/distributions/<rootProject.name>.zip file. The file includes the sub-project artifacts, their transitive dependencies, and wrapper scripts for bash and Windows.
For more details about rootProject.name, see:
Properties
mainClassName
mainClassName = 'greeter.Greeter'
Executing the Application from Project Work Area
gradle run
However, if the application requires command line parameters, they are not propagated. TODO: find a solution.