Create Start Scripts
Creates start scripts for launching JVM applications.
Example:
task createStartScripts(type: CreateStartScripts) {
outputDir = file('build/sample')
mainClass = 'org.gradle.test.Main'
applicationName = 'myApp'
classpath = files('path/to/some.jar')
}
Note: the Gradle "application"
plugin adds a pre-configured task of this type named "startScripts"
.
The task generates separate scripts targeted at Microsoft Windows environments and UNIX-like environments (e.g. Linux, macOS). The actual generation is implemented by the getWindowsStartScriptGenerator and getUnixStartScriptGenerator properties, of type ScriptGenerator.
Example:
task createStartScripts(type: CreateStartScripts) {
unixStartScriptGenerator = new CustomUnixStartScriptGenerator()
windowsStartScriptGenerator = new CustomWindowsStartScriptGenerator()
}
class CustomUnixStartScriptGenerator implements ScriptGenerator {
void generateScript(JavaAppStartScriptGenerationDetails details, Writer destination) {
// implementation
}
}
class CustomWindowsStartScriptGenerator implements ScriptGenerator {
void generateScript(JavaAppStartScriptGenerationDetails details, Writer destination) {
// implementation
}
}
The default generators are of the type TemplateBasedScriptGenerator, with default templates. This templates can be changed via the setTemplate method.
The default implementations used by this task use Groovy's SimpleTemplateEngine to parse the template, with the following variables available:
applicationName
- See getApplicationName.optsEnvironmentVar
- See getOptsEnvironmentVar.exitEnvironmentVar
- See getExitEnvironmentVar.moduleEntryPoint
- The module entry point, ornull
if none. Will also include the main class name if present, in the form[moduleName]/[className]
.mainClassName
- The main class name, or usually""
if none. For legacy reasons, this may be set to--module [moduleEntryPoint]
when using a main module. This behavior should not be relied upon and may be removed in a future release.entryPointArgs
- The arguments to be used on the command-line to enter the application, as a joined string. It should be inserted before the program arguments.defaultJvmOpts
- See getDefaultJvmOpts.appNameSystemProperty
- See getAppNameSystemProperty.appHomeRelativePath
- The path, relative to the script's own path, of the app home.classpath
- See getClasspath. It is already encoded as a joined string.modulePath
(different capitalization) - See getModulePath. It is already encoded as a joined string.
The encoded paths expect a variable named APP_HOME
to be present in the script, set to the application home directory which can be resolved using appHomeRelativePath
.
Example:
task createStartScripts(type: CreateStartScripts) {
unixStartScriptGenerator.template = resources.text.fromFile('customUnixStartScript.txt')
windowsStartScriptGenerator.template = resources.text.fromFile('customWindowsStartScript.txt')
}
Inheritors
Properties
The extra properties extension in this object's extension container.
Functions
Returns the extension of the specified type.
Returns the extension of the specified extensionType.