Gradle –多个启动脚本示例

很少有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
}

参考文献

  1. Gradle –应用程序插件
  2. Gradle应用程序插件– APP_HOME

翻译自: https://mkyong.com/gradle/gradle-multiple-start-script-examples/

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值