Gradle 1.12用户指南翻译——第四十五章. 应用程序插件
本文由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/ 中创建一张应用程序的图像。你可以运行projectNamegradle distZip 把 distrubution 打包成一个 ZIP 文件。
如果你的 Java 应用程序需要一组特定的 JVM 设置或系统属性,你可以配置applicationDefaultJvmArgs属性。这些 JVM 参数会被应用于run 任务,以及生成的 distrubution 的启动脚本。
示例 45.3. 配置默认 JVM 设置
build.gradle
applicationDefaultJvmArgs = ["-Dgreeting.language=en"]
45.2. 任务
应用程序插件向 project 中添加了以下任务。
表 45.1. 应用程序插件 - 任务
| 任务名称 | 依赖于 | 类型 | 描述 |
run |
classes |
JavaExec |
启动应用程序。 |
startScripts |
jar |
CreateStartScripts |
创建操作系统特定的脚本来把该项目作为一个 JVM 应用程序运行。 |
installApp |
jar,startScripts |
Sync |
将应用程序安装到指定的目录。 |
distZip |
jar,startScripts |
Zip |
创建包含了运行时库和操作系统特定的脚本的完整分发 ZIP 文件。 |
distTar |
jar,startScripts |
Tar |
创建包含了运行时库和操作系统特定的脚本的完整分发 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
Gradle 1.12用户指南翻译——第四十五章. 应用程序插件的更多相关文章
- Gradle 1.12用户指南翻译——第四十九章. Build Dashboard 插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- Gradle 1.12用户指南翻译——第四十二章. Announce插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- Gradle 1.12用户指南翻译——第三十六章. Sonar Runner 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- Gradle 1.12用户指南翻译——第三十五章. Sonar 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- Gradle 1.12用户指南翻译——第六十五章. Maven 发布(新)
其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上的地址:https://gith ...
- Gradle 1.12用户指南翻译——第四十八章. Wrapper 插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- Gradle 1.12用户指南翻译——第四十四章. 分发插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- Gradle 1.12用户指南翻译——第三十九章. IDEA 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- Gradle 1.12用户指南翻译——第三十二章. JDepend 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
随机推荐
- PHP实现统计在线人数功能示例
本文实例讲述了PHP实现统计在线人数的方法.分享给大家供大家参考,具体如下: 我记得ASP里面统计在线人数用application 这个对象就可以了.PHP怎么设计? PHP对session对象的封装 ...
- 使用 Docker 一步搞定 ZooKeeper 集群的搭建
背景 原来学习 ZK 时, 我是在本地搭建的伪集群, 虽然说使用起来没有什么问题, 但是总感觉部署起来有点麻烦. 刚好我发现了 ZK 已经有了 Docker 的镜像了, 于是就尝试了一下, 发现真是爽 ...
- 功能整合(一):滚动条的变相隐藏、js控制div的渐变显示、滚动条监听
1.滚动条的变相隐藏 思路: 1. 把body的横向,纵向的超出部分隐藏,宽设置100%:高设置100%.就没有body的滚动条了, 2. 然后把最外层的div的宽设置的比body的宽宽一点,把d ...
- [LeetCode] Range Addition II 范围相加之二
Given an m * n matrix M initialized with all 0's and several update operations. Operations are repre ...
- [Codeforces 864B]Polycarp and Letters
Description Polycarp loves lowercase letters and dislikes uppercase ones. Once he got a string s con ...
- hdu 5893 (树链剖分+合并)
List wants to travel Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/O ...
- [BZOJ]4199: [Noi2015]品酒大会(后缀数组+笛卡尔树)
Time Limit: 10 Sec Memory Limit: 512 MB Description Input Output Sample Input 10 ponoiiipoi 2 1 4 7 ...
- 【TCP网络协议问题】
题目描述 在如今的网络中,TCP 是一种被广泛使用的网络协议,它在传输层提供了可靠的通信服务.众所周知,网络是存在时延的,例如用户先后向服务器发送了两个指令 op1 和 op2,并且希望服务器先处理指 ...
- Codeforces Round #430 B. Gleb And Pizza
Gleb ordered pizza home. When the courier delivered the pizza, he was very upset, because several pi ...
- 解读Raft(一 算法基础)
最近工作中讨论到了Raft协议相关的一些问题,正好之前读过多次Raft协议的那paper,所以趁着讨论做一次总结整理. 我会将Raft协议拆成四个部分去总结: 算法基础 选举和日志复制 安全性 节点变 ...