| 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
写入脚本的目录。