複数の起動スクリプトや実行可能な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]