本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:

http://blog.csdn.net/column/details/gradle-translation.html

翻译项目请关注Github上的地址:

https://github.com/msdx/gradledoc

本文翻译所在分支:

https://github.com/msdx/gradledoc/tree/1.12。

直接浏览双语版的文档请访问:

http://gradledoc.qiniudn.com/1.12/userguide/userguide.html。

另外,Android 手机用户可通过我写的一个程序浏览文档,带缓存功能的,目前0.2.1版本兼容 android 2.2以上系统,地址如下:

http://www.wandoujia.com/apps/com.githang.gradledoc

翻译不易,转载请注明本文在CSDN博客上的出处:

http://blog.csdn.net/maosidiaoxian/article/details/50494891

关于我对Gradle的翻译,以Github上的项目及http://gradledoc.qiniudn.com 上的文档为准。如有发现翻译有误的地方,将首先在以上两个地方更新。因时间精力问题,博客中发表的译文基本不会同步修改。

第四十五章. 应用程序插件

Gradle 应用程序插件扩展了语言插件的一些常见应用程序相关的任务。它允许为 jvm 运行和捆绑应用程序。

45.1. 用法

要使用这个应用程序插件,请在构建脚本中包含以下语句:

示例 45.1. 使用应用程序插件

build.gradle

apply plugin:'application'

若要为应用程序定义 main-class,你必须如下所示设置mainClassName属性

示例 45.2. 配置应用程序的主类

build.gradle

mainClassName = "org.gradle.sample.Main"

然后,你可以通过执行 gradle run 来运行这个应用程序。Gradle 将会处理好构建的应用程序的类,以及它们的运行时依赖,还有使用正确的类路径启动应用程序。你可以通过gradle run --debug-jvm 在调试模式下启动该应用程序(见JavaExec.setDebug())。

该插件还可以生成你的应用程序的分发文件。分发的内容将会把这个程序的运行时依赖和一些操作系统特定的启动脚本打包在一起。所有存储在 src/dist 的文件都将添加到 distribution 的根目录中您可以运行gradle installApp,在build/install/projectName 中创建一张应用程序的图像。你可以运行gradle distZip 把 distrubution 打包成一个 ZIP 文件。

如果你的 Java 应用程序需要一组特定的 JVM 设置或系统属性,你可以配置applicationDefaultJvmArgs属性。这些 JVM 参数会被应用于run 任务,以及生成的 distrubution 的启动脚本。

示例 45.3. 配置默认 JVM 设置

build.gradle

applicationDefaultJvmArgs = ["-Dgreeting.language=en"]

45.2. 任务

应用程序插件向 project 中添加了以下任务。

表 45.1. 应用程序插件 - 任务

runclassesJavaExec启动应用程序。
startScriptsjarCreateStartScripts创建操作系统特定的脚本来把该项目作为一个 JVM 应用程序运行。
installAppjar,startScriptsSync将应用程序安装到指定的目录。
distZipjar,startScriptsZip创建包含了运行时库和操作系统特定的脚本的完整分发 ZIP 文件。
distTarjar,startScriptsTar创建包含了运行时库和操作系统特定的脚本的完整分发 TAR 文件。

45.3. 约定属性

该应用程序插件将一些属性添加到 project 中,以用于配置其行为。请参见 Project

45.4. 在 distribution 中包含其他资源

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"
}

通过指定分布包应包括的任务的输出文件 (见15.9.1章,“声明任务的输入和输出”),Gradle 将知道在组装 distribution 前哪些生产文件的任务必须被调用,并且会为你处理好。

示例 45.5. 自动创建用于分发的文件

gradle distZip的输出

> gradle distZip
:createDocs
:compileJava
:processResources UP-TO-DATE
:classes
:jar
:startScripts
:distZip BUILD SUCCESSFUL Total time: 1 secs
04-01 00:08