API 文档 | CreateStartScripts |
---|
创建用于启动JVM应用程序的启动脚本。
示例
task createStartScripts(type: CreateStartScripts) { outputDir = file('build/sample') mainClass = 'org.gradle.test.Main' applicationName = 'myApp' classpath = files('path/to/some.jar') }
注意:Gradle "application"
插件会添加一个预配置的此类型任务,名为 "startScripts"
。
该任务会生成针对Microsoft Windows环境和UNIX-like环境(例如Linux、macOS)的单独脚本。实际生成由 CreateStartScripts.getWindowsStartScriptGenerator()
和 CreateStartScripts.getUnixStartScriptGenerator()
属性实现,类型为 ScriptGenerator
。
示例
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 } }
默认生成器是 TemplateBasedScriptGenerator
类型,带有默认模板。这些模板可以通过 TemplateBasedScriptGenerator.setTemplate(org.gradle.api.resources.TextResource)
方法进行更改。
此任务使用的默认实现使用 Groovy 的 SimpleTemplateEngine 来解析模板,并提供以下可用变量:
applicationName
- 请参阅JavaAppStartScriptGenerationDetails.getApplicationName()
。optsEnvironmentVar
- 请参阅JavaAppStartScriptGenerationDetails.getOptsEnvironmentVar()
。exitEnvironmentVar
- 请参阅JavaAppStartScriptGenerationDetails.getExitEnvironmentVar()
。moduleEntryPoint
- 模块入口点,如果没有则为null
。如果存在主类名,也将包含在内,形式为[moduleName]/[className]
。mainClassName
- 主类名,如果没有通常为""
。出于历史原因,在使用主模块时,此值可能被设置为--module [moduleEntryPoint]
。不应依赖此行为,此行为可能在未来的版本中被移除。entryPointArgs
- 作为连接字符串在命令行上用于进入应用程序的参数。它应插入在程序参数之前。defaultJvmOpts
- 请参阅JavaAppStartScriptGenerationDetails.getDefaultJvmOpts()
。appNameSystemProperty
- 请参阅JavaAppStartScriptGenerationDetails.getAppNameSystemProperty()
。appHomeRelativePath
- 相对于脚本自身路径的应用程序主目录的路径。classpath
- 请参阅JavaAppStartScriptGenerationDetails.getClasspath()
。它已经编码为连接字符串。modulePath
(不同的大小写)- 请参阅JavaAppStartScriptGenerationDetails.getModulePath()
。它已经编码为连接字符串。
编码路径要求脚本中存在名为 APP_HOME
的变量,该变量设置为应用程序主目录,可以使用 appHomeRelativePath
解析。
示例
task createStartScripts(type: CreateStartScripts) { unixStartScriptGenerator.template = resources.text.fromFile('customUnixStartScript.txt') windowsStartScriptGenerator.template = resources.text.fromFile('customWindowsStartScript.txt') }
属性 | 描述 |
applicationName | 应用程序的名称。 |
类路径 | 应用程序的类路径。 |
defaultJvmOpts | 应用程序的默认JVM选项。默认为空列表。 |
executableDir | 在分发中写入脚本的目录。 |
mainClass | 用于启动Java应用程序的主类名。 |
mainModule | 用于启动模块化Java应用程序的主模块名。 |
optsEnvironmentVar | 用于向JVM提供额外选项的环境变量。 |
outputDir | 写入脚本的目录。 |
unixStartScriptGenerator | 类Unix启动脚本生成器。 |
windowsStartScriptGenerator | Windows启动脚本生成器。 |
String
applicationName
应用程序的名称。
FileCollection
classpath
应用程序的类路径。
String
executableDir
在分发中写入脚本的目录。
String
optsEnvironmentVar
用于向JVM提供额外选项的环境变量。
File
outputDir
写入脚本的目录。