本文由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/46963851
关于我对Gradle的翻译,以Github上的项目及http://gradledoc.qiniudn.com 上的文档为准。
如有发现翻译有误的地方,将首先在以上两个地方更新。因时间精力问题,博客中发表的译文基本不会同步改动。
第三十八章. Eclipse 插件
Eclipse 插件生成Eclipse IDE所使用的文件,从而让项目可以导入 Eclipse ( - - )。它考虑到了外部依赖项 (包含相关联的源文件和 javadoc 文件) 和项目依赖项。
从 1.0-里程碑-4 開始,WTP-generating 代码被重构为一个单独的插件,叫做eclipse-wtp
。所以假设你对
WTP 集成有兴趣。能够仅仅应用eclipse-wtp
插件。否则应用eclipse
插件就足够了。这样的变化是Eclipse用户要求的,他们想利用war
或ear
插件,但又不想用
Eclipse WTP。在内部,eclipse
wtp
也应用了eclipse
插件,所以你不须要同一时候应用这两个插件。
Eclipse 插件生成的内容全然取决于使用了哪些其它的插件:
表 38.1. Eclipse 插件行为
Eclipse 插件是开放的,以定制和提供一套标准化的钩,用于加入和删除生成的文件的内容。
要使用 Eclipse 插件,请在构建脚本中包括下面语句:
Eclipse 插件向你的projects 加入了大量的任务。您将使用的主要任务是eclipse
和cleanEclipse
任务。
Eclipse 插件向一个 project 加入了例如以下所看到的的任务。
表 38.2. Eclipse 插件 - 任务
任务名称 | 依赖于 | 类型 | 描写叙述 |
eclipse |
eclipseProject , eclipseClasspath ,eclipseJdt , eclipseWtpComponent , cleanEclipseWtpFacet |
Task |
会生成全部的 Eclipse 配置文件 |
cleanEclipse |
cleanEclipseProject , cleanEclipseClasspath , cleanEclipseJdt , cleanEclipseWtpComponent ,
|
Delete |
删除全部的 Eclipse 配置文件 |
cleanEclipseProject |
- |
Delete |
删除.project 文件。 |
cleanEclipseClasspath |
- |
Delete |
删除.classpath 文件。 |
cleanEclipseJdt |
- |
Delete |
删除.settings/org.eclipse.jdt.core.prefs 文件。 |
cleanEclipseWtpComponent |
- |
Delete |
删除.settings/org.eclipse.wst.common.component 文件。 |
cleanEclipseWtpFacet |
- |
Delete |
删除.settings/org.eclipse.wst.common.component 文件。 |
eclipseProject |
- |
GenerateEclipseProject |
生成的.project 文件。 |
eclipseClasspath |
- |
GenerateEclipseClasspath |
生成.classpath 文件。 |
eclipseJdt |
- |
GenerateEclipseJdt |
生成.settings/org.eclipse.jdt.core.prefs 文件。 |
eclipseWtpComponent |
- |
GenerateEclipseWtpComponent |
仅仅有当eclipse-wtp 插件应用的时候。生成 .settings/org.eclipse.wst.common.component 文件。 |
eclipseWtpFacet |
- |
GenerateEclipseWtpFacet |
仅仅有当eclipse-wtp 插件应用的时候,生成 文件。 |
表 38.3. Eclipse 插件的配置
模型 | 引用名称 | 描写叙述 |
EclipseModel |
eclipse |
顶级元素。以DSL友好的方式启用 Eclipse 插件的配置 |
EclipseProject |
eclipse.project |
同意配置项目信息 |
EclipseClasspath |
eclipse.classpath |
同意配置类路径信息 |
EclipseJdt |
eclipse.jdt |
同意配置 jdt 信息 (source/target java 兼容性) |
EclipseWtpComponent |
eclipse.wtp.component |
仅当eclipse-wtp 插件被应用时。同意配置
wtp 组件信息。 |
EclipseWtpFacet |
eclipse.wtp.facet |
仅当eclipse-wtp 插件被应用时,同意配置
wtp 方面信息。 |
Eclipse 插件同意您自己定义生成的元数据文件。该插件提供一个 DSL。用于配置把该 project 的Eclipse 视图做成模型的模型对象。然后把这些模型对象与现有的 Eclipse XML 元数据进行合并。终于生成新的元数据。模型对象提供了低级别的hook,用于处理在合并模型配置前后表示文件内容的域对象。他们还提供了一个很低级别的hook,用于直接处理原始 XML 持久化之前的调整。微调和配置使 Eclipse 插件不进行建模。
已存在的Eclipse 文件的部分,也是生成的目标内容,将会被改动或覆盖。详细取决于特定的部分。剩余的部分则不变。
Eclipse 插件提供了一些对象,对由 Gradle 生成的 Eclipse 文件的段落进行建模。生成的生命周期例如以下:
- 读取文件;假设它不存在。则使用由 Gradle 提供的默认版本号
-
beforeMerged
的 hook 会随着一个表示现有文件的域对象运行 - 从 Gradle 构建判断出来或在 eclipse DSL 中显示定义的配置会与现有的内容合并在一起
-
whenMerged
的 hook 会随着一个表示持久化的域对象运行 -
withXml
的 hook 会随着一个表示将被持久化的XML的 raw 运行 - 终于的 XML 被持久化
下表列出了用于每一个 Eclipse 模型类型的域对象:
表 38.4. 高级的配置hook
模型 |
beforeMerged
{ arg -> } 參数类型 |
whenMerged
{ arg -> } 參数类型 |
withXml
{ arg -> } 參数类型 |
EclipseProject |
Project |
Project |
XmlProvider |
EclipseClasspath |
Classpath |
Classpath |
XmlProvider |
EclipseJdt |
Jdt |
Jdt |
|
EclipseWtpComponent |
WtpComponent |
WtpComponent |
XmlProvider |
EclipseWtpFacet |
WtpFacet |
WtpFacet |
XmlProvider |
一个全然覆盖会导致现有的全部内容被丢弃,从而丢失在
IDE 中直接做的不论什么改动。另外, beforeMerged
hook
能够实现仅仅覆盖现有的某些部分的内容。以下的演示样例从Classpath
域对象中删除现有的全部依赖关系:
演示样例 38.2. 部分覆盖 Classpath
build.gradle
eclipse.classpath.file { beforeMerged { classpath -> classpath.entries.removeAll { entry -> entry.kind == 'lib' || entry.kind == 'var' } } }
生成的.classpath
文件将仅仅包括
Gradle 生成的依赖项。而没有其它可能存在于原始文件的依赖项。(对于依赖项,这也是默认行为。)其它部分的.classpath
文件将会被合并或者保留。对.project
文件里的natures的处理也是一样:
WhenMerged
hook
同意操作全然填充的域对象。
通常,这是自己定义 Eclipse 文件的首选的方法。以下的样例展示了怎样导出一个 Eclipse 项目的全部依赖项:
WithXml
hook
同意在文件写入到磁盘之前。操纵内存中的 XML 的表示形式。虽然 Groovy 的 XML 支持对其有非常大作用。但这样的方法比起操纵域对象依旧不慷慨便 。作为回报,你能够对生成的文件进行全面的控制,包含未由域对象建模的那些部分。