很少有build.gradle
示例向您展示如何创建多个启动脚本或可执行Java应用程序。
1.单启动脚本
1.1在Gradle中,您可以使用应用程序插件来创建可执行的Java应用程序:
build.gradle
apply plugin: 'application'
mainClassName = "com.mkyong.analyzer.run.threads.MainRunApp"
applicationName = 'mainApp'
applicationDefaultJvmArgs = ["-Xms512m", "-Xmx1024m"]
1.2使用gradle distZip
命令创建可执行Java应用程序。
$ gradle :analyzer:distZip
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar UP-TO-DATE
:startScripts
:distZip
1.3将在$project/build/distributions/xxx.zip
创建一个zip文件。
$project/build/distributions/project.zip
--- mainApp #*nix -> com.mkyong.analyzer.run.threads.MainRunApp
--- mainApp.bat #windows -> com.mkyong.analyzer.run.threads.MainRunApp
PS或者,尝试gradle distTar
创建一个Tar文件。
2.多个启动脚本
2.1要创建多个启动脚本,请创建一个自定义的CreateStartScripts
类型:
build.gradle
apply plugin: 'application'
mainClassName = "com.mkyong.analyzer.run.threads.MainRunApp"
applicationName = 'mainApp'
applicationDefaultJvmArgs = ["-Xms512m", "-Xmx1024m"]
task createExtraRunApp(type: CreateStartScripts) {
mainClassName = "com.mkyong.analyzer.run.UpdateHostingExtraRunApp"
classpath = startScripts.classpath
outputDir = startScripts.outputDir
applicationName = 'hostingExtraApp'
defaultJvmOpts = ["-Xms1024m", "-Xmx2048m"]
}
applicationDistribution.into("bin") {
duplicatesStrategy= DuplicatesStrategy.EXCLUDE
from(createExtraRunApp)
fileMode = 0755
}
2.2该脚本将创建两个可执行的Java应用程序:
$project/build/distributions/project.zip
---mainApp -> com.mkyong.analyzer.run.threads.MainRunApp
---mainApp.bat -> com.mkyong.analyzer.run.threads.MainRunApp
---hostingExtraApp -> com.mkyong.analyzer.run.UpdateHostingExtraRunApp
---hostingExtraApp.bat -> com.mkyong.analyzer.run.UpdateHostingExtraRunApp
3.多个启动脚本–再次
3.1这个build.gradle
在我的项目中使用,它创建了三个可执行的Java应用程序:
build.gradle
apply plugin: 'application'
mainClassName = "com.hostingcompass.analyzer.run.threads.HydraRunApp"
applicationName = 'hydra'
applicationDefaultJvmArgs = ["-Dlogback.configurationFile=MY_APP_HOME/logback-hydra.xml",
"-Dconfig=MY_APP_HOME/config.properties",
"-Djava.net.preferIPv4Stack=true", "-Dapp.home=MY_APP_HOME/", "-Xms512m", "-Xmx1024m"]
startScripts {
doLast {
unixScript.text = unixScript.text.replace('MY_APP_HOME', '\$APP_HOME')
windowsScript.text = windowsScript.text.replace('MY_APP_HOME', '%~dp0..')
}
}
task updateHostingExtraRunApp(type: CreateStartScripts) {
mainClassName = "com.hostingcompass.analyzer.run.UpdateHostingExtraRunApp"
classpath = startScripts.classpath
outputDir = startScripts.outputDir
applicationName = 'hostingExtra'
defaultJvmOpts = ["-Dlogback.configurationFile=MY_APP_HOME/logback-hosting-extra.xml",
"-Dconfig=MY_APP_HOME/config.properties", "-Dapp.home=MY_APP_HOME/", "-Xms512m", "-Xmx1024m"]
updateHostingExtraRunApp {
doLast {
unixScript.text = unixScript.text.replace('MY_APP_HOME', '\$APP_HOME')
windowsScript.text = windowsScript.text.replace('MY_APP_HOME', '%~dp0..')
}
}
}
task updateWhoisExtraRunApp(type: CreateStartScripts) {
mainClassName = "com.hostingcompass.analyzer.run.UpdateWhoisExtraRunApp"
classpath = startScripts.classpath
outputDir = startScripts.outputDir
applicationName = 'whoisExtra'
defaultJvmOpts = ["-Dlogback.configurationFile=MY_APP_HOME/logback-whois-extra.xml",
"-Dconfig=MY_APP_HOME/config.properties", "-Dapp.home=MY_APP_HOME/", "-Xms512m", "-Xmx1024m"]
updateWhoisExtraRunApp {
doLast {
unixScript.text = unixScript.text.replace('MY_APP_HOME', '\$APP_HOME')
windowsScript.text = windowsScript.text.replace('MY_APP_HOME', '%~dp0..')
}
}
}
applicationDistribution.into("bin") {
duplicatesStrategy= DuplicatesStrategy.EXCLUDE
from(updateHostingExtraRunApp)
from(updateWhoisExtraRunApp)
fileMode = 0755
}
distZip {
archiveName 'analyzer.zip'
}
3.2输出
$project/build/distributions/analyzer.zip
---hydra
---hydra.bat
---hostingExtra
---hostingExtra.bat
---whoisExtra
---whoisExtra.bat
注意
记住要声明排除duplicatesStrategy
以避免重复的启动脚本。applicationDistribution.into("bin") { duplicatesStrategy= DuplicatesStrategy.EXCLUDE from(updateHostingExtraRunApp) from(updateWhoisExtraRunApp) fileMode = 0755 }
参考文献
翻译自: https://mkyong.com/gradle/gradle-multiple-start-script-examples/