翻译项目请关注Github上的地址:
第四十五章. 应用程序插件
Gradle 应用程序插件扩展了语言插件的一些常见应用程序相关的任务。它允许为 jvm 运行和捆绑应用程序。
要使用这个应用程序插件,请在构建脚本中包含以下语句:
若要为应用程序定义 main-class,你必须如下所示设置mainClassName属性
然后,你可以通过执行 gradle run 来运行这个应用程序。Gradle 将会处理好构建的应用程序的类,以及它们的运行时依赖,还有使用正确的类路径启动应用程序。你可以通过gradle run --debug-jvm 在调试模式下启动该应用程序(见JavaExec.setDebug())。
该插件还可以生成你的应用程序的分发文件。分发的内容将会把这个程序的运行时依赖和一些操作系统特定的启动脚本打包在一起。所有存储在 src/dist 的文件都将添加到 distribution 的根目录中您可以运行gradle installApp,在build/install/ 中创建一张应用程序的图像。你可以运行projectNamegradle distZip 把 distrubution 打包成一个 ZIP 文件。
如果你的 Java 应用程序需要一组特定的 JVM 设置或系统属性,你可以配置applicationDefaultJvmArgs属性。这些 JVM 参数会被应用于run 任务,以及生成的 distrubution 的启动脚本。
应用程序插件向 project 中添加了以下任务。
表 45.1. 应用程序插件 - 任务
| 任务名称 | 依赖于 | 类型 | 描述 |
run |
classes |
JavaExec |
启动应用程序。 |
startScripts |
jar |
CreateStartScripts |
创建操作系统特定的脚本来把该项目作为一个 JVM 应用程序运行。 |
installApp |
jar,startScripts |
Sync |
将应用程序安装到指定的目录。 |
distZip |
jar,startScripts |
Zip |
创建包含了运行时库和操作系统特定的脚本的完整分发 ZIP 文件。 |
distTar |
jar,startScripts |
Tar |
创建包含了运行时库和操作系统特定的脚本的完整分发 TAR 文件。 |
该应用程序插件将一些属性添加到 project 中,以用于配置其行为。请参见 Project。
applicationDistribution是由插件添加的公约属性之一,它是一个CopySpec。这个描述在 installApp 和 distZip 任务中会用到,作为这个distribution 都包含了什么内容的描述。以上在 distribution 中将启动脚本复制到bin目录,并且将必要的 jar 文件复制到lib目录,所有在src/dist目录的文件也会被复制。如果要在 distribution 中包括任何的静态文件,只需要把它们放在src/dist目录。
如果你的项目生成的文件中要在 distrubution 中,例如文档,你可以通过把它们添加到applicationDistribution复制规范,来将这些文件添加到 distribution 中。
示例 45.4. 在应用程序的分发中包含其他任务的输出文件
build.gradle
task createDocs {
def docs = file("$buildDir/docs")
outputs.dir docs
doLast {
docs.mkdirs()
new File(docs, "readme.txt").write("Read me!")
}
}
applicationDistribution.from(createDocs) {
into "docs"
}
gradle distZip的输出
> gradle distZip :createDocs :compileJava :processResources UP-TO-DATE :classes :jar :startScripts :distZip BUILD SUCCESSFUL Total time: 1 secs