Gradle – 複数の起動スクリプトの例
複数の起動スクリプトや実行可能なJavaアプリケーションを作成する方法を示す `build.gradle`の例はほとんどありません。
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 zipファイルは `$ project/build/distribution/xxx.zip`に作成されます
$project/build/distributions/project.zip
— mainApp #** nix → com.mkyong.analyzer.run.threads.MainRunApp
— mainApp.bat #windows → com.mkyong.analyzer.run.threads.MainRunApp
__P.Sあるいは、 `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このスクリプトは、実行可能な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`は私のプロジェクトで使用しています.3つの実行可能な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
** 注意** 重複した開始スクリプトを避けるため、exclude` duplicatesStrategy`を宣言してください。
applicationDistribution.into(“bin”) {
duplicatesStrategy= DuplicatesStrategy.EXCLUDE
from(updateHostingExtraRunApp)
from(updateWhoisExtraRunApp)
fileMode = 0755
}
=== 参考文献 . https://docs.gradle.org/current/userguide/application__plugin.html[Gradle - アプリケーションプラグイン]。リンク://gradle/gradle-application-plugin-app__home-in-applicationdefaultjvmargs/[Gradle アプリケーションプラグイン - APP__HOME] link://tag/application-plugin/[アプリケーションプラグイン]link://tag/gradle/[gradle]link://タグ/start-script/[start script]