Gradle - Примеры сценариев множественного запуска
Несколько примеровbuild.gradle, чтобы показать вам, как создать несколько сценариев запуска или исполняемое приложение Java.
1. Сценарий однократного запуска
1.1 In Gradle, you can use the application plugin to create an executable Java application :
build.gradle
apply plugin: 'application' mainClassName = "com.example.analyzer.run.threads.MainRunApp" applicationName = 'mainApp' applicationDefaultJvmArgs = ["-Xms512m", "-Xmx1024m"]
1.2 Create the executable Java application with gradle distZip command.
$ gradle :analyzer:distZip :compileJava UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :jar UP-TO-DATE :startScripts :distZip
1.3 A zip file will be created in $project/build/distributions/xxx.zip
$project/build/distributions/project.zip --- mainApp #*nix -> com.example.analyzer.run.threads.MainRunApp --- mainApp.bat #windows -> com.example.analyzer.run.threads.MainRunApp
P.S Alternatively, try gradle distTar to create a Tar file.
2. Скрипты с несколькими запусками
2.1 To create multiple start scripts, create a custom CreateStartScripts type :
build.gradle
apply plugin: 'application'
mainClassName = "com.example.analyzer.run.threads.MainRunApp"
applicationName = 'mainApp'
applicationDefaultJvmArgs = ["-Xms512m", "-Xmx1024m"]
task createExtraRunApp(type: CreateStartScripts) {
mainClassName = "com.example.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 This script will create two executable Java applications :
$project/build/distributions/project.zip ---mainApp -> com.example.analyzer.run.threads.MainRunApp ---mainApp.bat -> com.example.analyzer.run.threads.MainRunApp ---hostingExtraApp -> com.example.analyzer.run.UpdateHostingExtraRunApp ---hostingExtraApp.bat -> com.example.analyzer.run.UpdateHostingExtraRunApp
3. Скрипт множественного запуска - снова
3.1 This build.gradle is using in my project, it creates three executable Java application :
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 Output
$project/build/distributions/analyzer.zip ---hydra ---hydra.bat ---hostingExtra ---hostingExtra.bat ---whoisExtra ---whoisExtra.bat
Note
Не забудьте объявить исключениеduplicatesStrategy, чтобы избежать дублирования сценария запуска.
applicationDistribution.into("bin") {
duplicatesStrategy= DuplicatesStrategy.EXCLUDE
from(updateHostingExtraRunApp)
from(updateWhoisExtraRunApp)
fileMode = 0755
}