Gradle 1.12用户指南翻译——第二十四章. Groovy 插件
其他章节的翻译请参见:
http://blog.csdn.net/column/details/gradle-translation.html
翻译项目请关注Github上的地址:
https://github.com/msdx/gradledoc/tree/1.12。
直接浏览双语版的文档请访问:
http://gradledoc.qiniudn.com/1.12/userguide/userguide.html。
另外,Android 手机用户可通过我写的一个程序浏览文档,带缓存功能的,兼容2.1以上(5.0没试过)的Android系统,地址如下:
http://www.wandoujia.com/apps/com.githang.gradledoc
翻译不易,转载请注明本文在CSDN博客上的出处:
http://blog.csdn.net/maosidiaoxian/article/details/45390357
关于我对Gradle的翻译,以Github上的项目及http://gradledoc.qiniudn.com 上的文档为准。如有发现翻译有误的地方,将首先在以上两个地方更新。因时间精力问题,博客中发表的译文基本不会同步修改。
第二十四章. Groovy 插件
Groovy 的插件继承自 Java 插件并添加了对 Groovy 项目的支持。它可以处理 Groovy 代码,以及混合的 Groovy 和 Java 代码,甚至是纯 Java 代码(尽管我们不一定推荐使用)。该插件支持联合编译,可以任意地混合及匹配Groovy
和 Java 代码各自的依赖。例如,一个 Groovy 类可以继承自一个 Java 类,而这个 Java 类也可以继承自一个 Groovy 类。这样一来,我们就能够在项目中使用最适合的语言,并且在有需要的情况下用其他的语言重写其中的任何类。
24.1. 用法
要使用 Groovy 的插件,请在构建脚本中包含以下语句:
示例 24.1. 使用 Groovy 插件
build.gradle
apply plugin: 'groovy'
24.2. 任务
Groovy 的插件向project 中添加了以下任务。
表 24.1. Groovy 插件 - 任务
| 任务名称 | 依赖于 | 类型 | 描述 |
compileGroovy |
compileJava |
GroovyCompile |
编译production 的 Groovy 源文件。 |
compileTestGroovy |
compileTestJava |
GroovyCompile |
编译test 的 Groovy 的源文件。 |
compile |
compile |
GroovyCompile |
编译给定的source set 里的 Groovy 源文件。 |
groovydoc |
- |
Groovydoc |
为production 里的 Groovy 源文件生成 API 文档。 |
Groovy 的插件向 Java 插件所加入的 tasks 添加了以下的依赖。
表 24.2. Groovy 插件 - 额外的task 依赖
| 任务名称 | 依赖于 |
| classes | compileGroovy |
| testClasses | compileTestGroovy |
sourceSetClasses |
compileSourceSetGroovy |
图 24.1. Groovy 插件 - tasks
24.3. 项目布局
Groovy 的插件会假定项目的布局如表
24.3,“Groovy 插件 - 项目布局”中所示。所有 Groovy 的源目录都可以包含 Groovy和Java
代码。Java 源目录只能包含 Java 源代码。[11]这些目录不一定得存在或是里面包含有什么内容;Groovy
的插件只会进行编译,而不管它发现什么。
表 24.3. Groovy 插件 - 项目布局
| 目录 | 意义 |
src/main/java |
产品的Java源代码 |
src/main/resources |
产品的资源 |
src/main/groovy |
Production Groovy 源代码。此外可能包含联合编译的 Java 源代码。 |
src/test/java |
Java 测试源代码 |
src/test/resources |
测试资源 |
src/test/groovy |
Test Groovy 源代码。此外可能包含联合编译的 Java 源代码。 |
src/ |
给定的源集的Java源代码 |
src/ |
给定的源集的资源 |
src/ |
给定的source set 的 Groovy 源代码。此外可能包含联合编译的 Java 源代码。 |
24.3.1. 更改项目布局
和 Java 插件一样,Groovy 插件允许把 Groovy 的production 和test 的源文件配置为自定义的位置。
示例 24.2. 自定义 Groovy 自定义源文件布局
build.gradle
sourceSets {
main {
groovy {
srcDirs = ['src/groovy']
}
}
test {
groovy {
srcDirs = ['test/groovy']
}
}
}
24.4. 依赖管理
由于 Gradle 的构建语言基于 Groovy 的,且部分的 Groovy 使用 Groovy 实现,因此 Gradle 已经带有了一个 Groovy 库 (截至 Gradle 1.6所带的 Groovy 库的版本是 1.8.6)。然而,Groovy 项目需要显式地声明一个 Groovy 依赖。这个依赖会在编译和运行的类路径时用到。它还将用于分别获取Groovy 编译器及 Groovydoc 工具。
如果 Groovy 用于production 代码,Groovy 依赖应该添加到compile配置中:
示例 24.3. Groovy 的依赖配置
build.gradle
repositories {
mavenCentral()
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.2.0'
}
如果 Groovy 仅用于测试代码,Groovy 的依赖应该被添加到testCompile配置中:
示例 24.4. 配置Groovy 测试依赖
build.gradle
dependencies {
testCompile "org.codehaus.groovy:groovy-all:2.2.0"
}
如果要使用 Gradle 所带的 Groovy 库,请声明localGroovy()依赖。注意,不同
Gradle 版本附带的 Groovy 版本不同;因此,声明一个固定的 Groovy 依赖要比使用localGroovy()更安全一些。
示例 24.5. 配置捆绑的 Groovy 依赖
build.gradle
dependencies {
compile localGroovy()
}
Groovy 库不一定得从远程仓库中获取。它也可以获取自本地中可能检入版本控制的lib目录:
示例 24.6. 配置Groovy 文件依赖
build.gradle
repositories {
flatDir { dirs 'lib' }
}
dependencies {
compile module('org.codehaus.groovy:groovy:1.6.0') {
dependency('asm:asm-all:2.2.3')
dependency('antlr:antlr:2.7.7')
dependency('commons-cli:commons-cli:1.2')
module('org.apache.ant:ant:1.9.3') {
dependencies('org.apache.ant:ant-junit:1.9.3@jar', 'org.apache.ant:ant-launcher:1.9.3')
}
}
}
24.5. groovyClasspath
的自动配置
GroovyCompile和Groovydoc tasks
会以两种方式使用 Groovy: 在它们的classpath以及它们的groovyClasspath上。前者用于在源代码中查找类的引用,通常会包含
Groovy 库和其他库。后者用来分别加载和执行 Groovy 编译器和 Groovydoc 工具,并且应该只包含 Groovy 库及其依赖项。
除非显式配置了一个 task 的groovyClasspath ,否则
Groovy(基础)插件会尝试推断该 task 的classpath。以如下方式进行:
- 如果在在
classpath中找到groovy-all(-indy)Jar,相同的
Jar 将添加到groovyClasspath中。 - 如果在
classpath中找到groovy(-indy)Jar
,并且该项目已经在至少一个仓库中声明了它,那么相应的groovy(-indy)的仓库依赖将添加到groovyClasspath中。 - 其他情况,该task 将执行失败,并提示无法推断
groovyClasspath。
24.6. 常规属性
Groovy 的插件没有向 project 添加任何的常规属性。
24.7. source
set 属性
Groovy 的插件向 project 的每一个source set 添加了下列的常规属性。你可以在你的构建脚本中,把这些属性当成是source set 对象中的属性一样使用 (见第
21.3,“公约”)。
表 24.4. Groovy 插件 - source set 属性
| 属性名称 | 类型 | 默认值 | 描述 |
groovy |
SourceDirectorySet (read-only) |
非空 |
该source set 中的 Groovy 源文件。包含在 Groovy 源目录中找到的所有的.groovy和.java文件,并排除所有其他类型的文件。 |
groovy.srcDirs |
Set<File>.可以使用16.5 章节,"指定一组输入文件"中所讲到的任何一个来设置。 |
[ |
源目录包含该 source set 中的 Groovy 源文件。此外可能还包含用于联合编译的 Java 源文件。 |
allGroovy |
FileTree (read-only) |
非空 |
该source set 中的所有 Groovy 源文件。包含在 Groovy 源目录中找到的所有的.groovy文件。 |
这些属性由一个GroovySourceSet 的约定对象提供。
Groovy 的插件还修改了一些 source set 的属性:
表 24.5. Groovy 的插件 - source set 属性
| 属性名称 | 修改的内容 |
allJava |
添加在 Groovy 源目录中找到的所有.java文件。 |
allSource |
添加在 Groovy 的源目录中找到的所有源文件。 |
24.8. GroovyCompile
Java 插件向 project 里的每个source set 添加了一个JavaCompile task。这个task
的类型继承自JavaCompile task(见第
23.11 节,“CompileJava”)。除非groovyOptions.useAnt设置为true,否则将使用
Gradle 集成的本地的 Groovy 编译器。对于大多数项目而言,这相比基于 Ant 编译器,是个更好的选择。GroovyCompile task
支持官方的 Groovy 编译器的大多数配置选项。
表 24.6. Groovy 插件 - GroovyCompile 属性
| 任务属性 | 类型 | 默认值 |
classpath |
FileCollection |
|
source |
FileTree.可以使用16.5 章节,"指定一组输入文件"中所讲到的任何一种方式来设置。 |
|
destinationDir |
File. |
|
groovyClasspath |
FileCollection |
如果groovy 配置不为空,则为该配置;否则为 classpath 中找到的Groovy 库 |
[11] 我们使用和
Russel Winder 的 Gant 工具同样的约定(http://gant.codehaus.org)。
Gradle 1.12用户指南翻译——第二十四章. Groovy 插件的更多相关文章
- Gradle 1.12用户指南翻译——第二十九章. Checkstyle 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- Gradle 1.12用户指南翻译——第二十六章. War 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- Gradle 1.12用户指南翻译——第二十五章. Scala 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- Gradle 1.12用户指南翻译——第二十二章. 标准的 Gradle 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- Gradle 1.12用户指南翻译——第二十八章. Jetty 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- Gradle 1.12用户指南翻译——第五十三章. 签名插件
其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上的地址:https://gith ...
- Gradle 1.12用户指南翻译——第三十一章. FindBugs 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- Gradle 1.12用户指南翻译——第三十七章. OSGi 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- Gradle 1.12用户指南翻译——第三十三章. PMD 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
随机推荐
- Quartz学习笔记1:Quartz概述
Quartz是开源任务调度框架中的翘楚,它提供了强大的 任务调度机制.Quartz允许开发人员灵活的定义触发器的调度时间表,并可对触发器和任务进行关联映射.此外,Quartz提供了调度运行环境的持久化 ...
- oracle手工生成AWR报告方法记录
AWR(Automatic Workload Repository)报告是我们进行日常数据库性能评定.问题SQL发现的重要手段.熟练掌握AWR报告,是做好开发.运维DBA工作的重要基本功. AWR报告 ...
- SSH 之 Spring的源码(一)——Bean加载过程
看看Spring的源码,看看巨人的底层实现,拓展思路,为了更好的理解原理,看看源码,深入浅出吧.本文基于Spring 4.0.8版本. 首先Web项目使用Spring是通过在web.xml里面配置 o ...
- java虚拟机 jvm 栈数据区
java栈帧还是需要一些数据支持常量池的解析.正常方法的返回和异常的处理.大部分的java字节码指令需要进行常量池的访问,在栈帧数据区中保存着访问常量池的指针,方便程序访问java常量池.如下图所示: ...
- [virtualenv]生产环境中使用virtualenv
virtualenv 对于python开发和部署都是好工具,可以隔离多个python版本和第三方库的版本,这里作者总结了几个常用python服务怎么样结合virtual部署 原文链接 Python 中 ...
- 深入浅出Tabhost+简单入门Demo
小伙伴们在手机上逛淘宝的时候,会发现在淘宝的下面有个按钮,分别是首页.微淘.社区.购物车和我的淘宝,点击不同的按钮会跳转到不同的页面,目前小编所接手的这个项目,也需要用到类似这样的功能,小编就发挥网络 ...
- 最详细的制作正式版10.11 OS X El Capitan 安装U盘的方法
原帖地址:http://bbs.feng.com/read-htm-tid-10036487.html 一.准备工作: 1.准备一个 8GB 或以上容量的 U 盘,确保里面的数据已经妥善备份好(该过程 ...
- NV12和NV21转rgb
void NV21_T_RGB(unsigned int width , unsigned int height , unsigned char *yuyv , unsigned char *rgb) ...
- Android的ANR详解(原因和方案)
ANR的定义 在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框 ...
- Ubuntu 15.10下Qt5的安装实战
写照篇博客的目的就是因为最近要使用Qt,但是由于本人的系统是Ubuntu的,而网上大部分的讲解全是基于Windows的,所以就花费一些时间总结了一下我的安装过程,当然也是也为了能帮助到更多的博友. 第 ...