Class CreateStartScripts

java.lang.Object
org.gradle.api.internal.AbstractTask
org.gradle.api.DefaultTask
org.gradle.api.internal.ConventionTask
org.gradle.jvm.application.tasks.CreateStartScripts
All Implemented Interfaces:
Comparable<Task>, org.gradle.api.internal.DynamicObjectAware, org.gradle.api.internal.IConventionAware, org.gradle.api.internal.TaskInternal, Named, ExtensionAware, Task, Configurable<Task>
Direct Known Subclasses:
CreateStartScripts

@DisableCachingByDefault(because="Not worth caching") public abstract class CreateStartScripts extends org.gradle.api.internal.ConventionTask
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 TemplateBasedScriptGenerator.setTemplate(org.gradle.api.resources.TextResource) method.

The default implementations used by this task use Groovy's SimpleTemplateEngine to parse the template, with the following variables available:

  • applicationName
  • optsEnvironmentVar
  • exitEnvironmentVar
  • mainModule
  • mainClass
  • executableDir
  • defaultJvmOpts
  • appNameSystemProperty
  • appHomeRelativePath
  • classpath

Example:

 task createStartScripts(type: CreateStartScripts) {
   unixStartScriptGenerator.template = resources.text.fromFile('customUnixStartScript.txt')
   windowsStartScriptGenerator.template = resources.text.fromFile('customWindowsStartScript.txt')
 }
 
  • Constructor Details

    • CreateStartScripts

      public CreateStartScripts()
  • Method Details

    • getObjectFactory

      @Inject protected ObjectFactory getObjectFactory()
    • getJavaModuleDetector

      @Inject protected org.gradle.internal.jvm.JavaModuleDetector getJavaModuleDetector()
    • getOptsEnvironmentVar

      @Nullable @Optional @Input public String getOptsEnvironmentVar()
      The environment variable to use to provide additional options to the JVM.
    • getExitEnvironmentVar

      @Nullable @Optional @Input public String getExitEnvironmentVar()
      The environment variable to use to control exit value (Windows only).
    • getUnixScript

      @Internal public File getUnixScript()
      Returns the full path to the Unix script. The target directory is represented by the output directory, the file name is the application name without a file extension.
    • getWindowsScript

      @Internal public File getWindowsScript()
      Returns the full path to the Windows script. The target directory is represented by the output directory, the file name is the application name plus the file extension .bat.
    • getOutputDir

      @OutputDirectory @Nullable public File getOutputDir()
      The directory to write the scripts into.
    • setOutputDir

      public void setOutputDir(@Nullable File outputDir)
    • getExecutableDir

      @Input public String getExecutableDir()
      The directory to write the scripts into in the distribution.
      Since:
      4.5
    • setExecutableDir

      public void setExecutableDir(String executableDir)
      The directory to write the scripts into in the distribution.
      Since:
      4.5
    • getMainModule

      @Optional @Input public Property<String> getMainModule()
      The main module name used to start the modular Java application.
      Since:
      6.4
    • getMainClass

      @Optional @Input public Property<String> getMainClass()
      The main class name used to start the Java application.
      Since:
      6.4
    • getMainClassName

      @Input @Optional @Nullable @Deprecated public String getMainClassName()
      Deprecated.
      The main class name used to start the Java application.
    • setMainClassName

      @Deprecated public void setMainClassName(@Nullable String mainClassName)
      Deprecated.
    • getDefaultJvmOpts

      @Nullable @Optional @Input public Iterable<String> getDefaultJvmOpts()
      The application's default JVM options. Defaults to an empty list.
    • setDefaultJvmOpts

      public void setDefaultJvmOpts(@Nullable Iterable<String> defaultJvmOpts)
    • getApplicationName

      @Nullable @Input public String getApplicationName()
      The application's name.
    • setApplicationName

      public void setApplicationName(@Nullable String applicationName)
    • setOptsEnvironmentVar

      public void setOptsEnvironmentVar(@Nullable String optsEnvironmentVar)
    • setExitEnvironmentVar

      public void setExitEnvironmentVar(@Nullable String exitEnvironmentVar)
    • getClasspath

      The class path for the application.
    • getModularity

      public ModularitySpec getModularity()
      Returns the module path handling for executing the main class.
      Since:
      6.4
    • setClasspath

      public void setClasspath(@Nullable FileCollection classpath)
    • getUnixStartScriptGenerator

      @Internal public ScriptGenerator getUnixStartScriptGenerator()
      The UNIX-like start script generator.

      Defaults to an implementation of TemplateBasedScriptGenerator.

    • setUnixStartScriptGenerator

      public void setUnixStartScriptGenerator(ScriptGenerator unixStartScriptGenerator)
    • getWindowsStartScriptGenerator

      @Internal public ScriptGenerator getWindowsStartScriptGenerator()
      The Windows start script generator.

      Defaults to an implementation of TemplateBasedScriptGenerator.

    • setWindowsStartScriptGenerator

      public void setWindowsStartScriptGenerator(ScriptGenerator windowsStartScriptGenerator)
    • generate

      public void generate()
    • getRelativeClasspath

      @Input protected Iterable<String> getRelativeClasspath()