• Gradle 1.12用户指南翻译——第三十八章. Eclipse 插件


    本文由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 (File - Import... - Existing Projects into Workspace)。它考虑到了外部依赖项 (包含相关联的源文件和 javadoc 文件) 和项目依赖项。

    从 1.0-里程碑-4 開始,WTP-generating 代码被重构为一个单独的插件,叫做eclipse-wtp。所以假设你对 WTP 集成有兴趣。能够仅仅应用eclipse-wtp插件。否则应用eclipse插件就足够了。这样的变化是Eclipse用户要求的,他们想利用warear插件,但又不想用 Eclipse WTP。在内部,eclipse wtp也应用了eclipse插件,所以你不须要同一时候应用这两个插件。

    Eclipse 插件生成的内容全然取决于使用了哪些其它的插件:

    表 38.1. Eclipse 插件行为

    插件 描写叙述
    None 生成最小的.project文件。

    Java 将 Java 配置加入到.project

    生成.classpath和 JDT 设置文件。

    Groovy 将 Groovy 配置加入到.project
    Scala 加入 Scala 支持到.project.classpath文件。
    War 将 web 应用程序支持加入到.project文件。

    仅当eclipse-wtp插件被应用时生成 WTP 设置文件。

    ear 将 ear 应用程序支持加入到.project文件。

    仅当eclipse-wtp插件被应用时生成 WTP 设置文件。

    Eclipse 插件是开放的,以定制和提供一套标准化的钩,用于加入和删除生成的文件的内容。

    38.1. 使用方法

    要使用 Eclipse 插件,请在构建脚本中包括下面语句:

    演示样例 38.1. 使用 Eclipse 插件

    build.gradle

    apply plugin: 'eclipse'

    Eclipse 插件向你的projects 加入了大量的任务。您将使用的主要任务是eclipsecleanEclipse任务。

    38.2. 任务

    Eclipse 插件向一个 project 加入了例如以下所看到的的任务。

    表 38.2. Eclipse 插件 - 任务

    任务名称 依赖于 类型 描写叙述
    eclipse eclipseProject, eclipseClasspath,eclipseJdt, 
    eclipseWtpComponent, cleanEclipseWtpFacet
    Task 会生成全部的 Eclipse 配置文件
    cleanEclipse cleanEclipseProject, cleanEclipseClasspath, 
    cleanEclipseJdt, cleanEclipseWtpComponent,
    cleanEclipseWtpFacet
    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插件应用的时候,生成
    .settings/org.eclipse.wst.common.project.facet.core.xml

    文件。

    38.3. 配置

    表 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 方面信息。

    38.4. 自己定义生成的文件

    Eclipse 插件同意您自己定义生成的元数据文件。该插件提供一个 DSL。用于配置把该 project 的Eclipse 视图做成模型的模型对象。然后把这些模型对象与现有的 Eclipse XML 元数据进行合并。终于生成新的元数据。模型对象提供了低级别的hook,用于处理在合并模型配置前后表示文件内容的域对象。他们还提供了一个很低级别的hook,用于直接处理原始 XML 持久化之前的调整。微调和配置使 Eclipse 插件不进行建模。

    38.4.1. 合并

    已存在的Eclipse 文件的部分,也是生成的目标内容,将会被改动或覆盖。详细取决于特定的部分。剩余的部分则不变。

    38.4.1.1. 禁用全然覆盖的合并

    若要全然覆盖现有 Eclipse 文件。请运行clean任务和其对应的生成任务。比如gradle cleanEclipse eclipse (按此顺序)。假设你想要让它成为默认行为,请将tasks.eclipse.dependsOn(cleanEclipse)加入到构建脚本。这样一来。我们就没有必要显式运行 clean 任务。

    全然覆盖相同能够用于个人文件,比如通过运行gradle cleanEclipseClasspath eclipseClasspath

    38.4.2. Hooking到生成的生命周期中

    Eclipse 插件提供了一些对象,对由 Gradle 生成的 Eclipse 文件的段落进行建模。生成的生命周期例如以下:

    1. 读取文件;假设它不存在。则使用由 Gradle 提供的默认版本号
    2. beforeMerged的 hook 会随着一个表示现有文件的域对象运行
    3. 从 Gradle 构建判断出来或在 eclipse DSL 中显示定义的配置会与现有的内容合并在一起
    4. whenMerged的 hook 会随着一个表示持久化的域对象运行
    5. withXml的 hook 会随着一个表示将被持久化的XML的 raw 运行
    6. 终于的 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

    38.4.2.1. 部分重写现有内容

    一个全然覆盖会导致现有的全部内容被丢弃,从而丢失在 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的处理也是一样:

    演示样例 38.3. 部分覆盖项目

    build.gradle

    eclipse.project.file.beforeMerged { project ->
        project.natures.clear()
    }

    38.4.2.2. 改动全然填充的域对象

    WhenMerged hook 同意操作全然填充的域对象。

    通常,这是自己定义 Eclipse 文件的首选的方法。以下的样例展示了怎样导出一个 Eclipse 项目的全部依赖项:

    演示样例 38.4. 导出依赖项

    build.gradle

    eclipse.classpath.file {
        whenMerged { classpath ->
            classpath.entries.findAll { entry -> entry.kind == 'lib' }*.exported = false
        }
    }

    38.4.2.3. 改动 XML 的表示形式

    WithXml hook 同意在文件写入到磁盘之前。操纵内存中的 XML 的表示形式。虽然 Groovy 的 XML 支持对其有非常大作用。但这样的方法比起操纵域对象依旧不慷慨便 。作为回报,你能够对生成的文件进行全面的控制,包含未由域对象建模的那些部分。

    演示样例 38.5. 自己定义 XML

    build.gradle

    apply plugin: 'eclipse-wtp'
    
    eclipse.wtp.facet.file.withXml { provider ->
        provider.asNode().fixed.find { it.@facet == 'jst.java' }.@facet = 'jst2.java'
    }

  • 相关阅读:
    codeforces 814B An express train to reveries
    codeforces 814A An abandoned sentiment from past
    codeforces 785D D. Anton and School
    codeforces 785C Anton and Fairy Tale
    codeforces 791C Bear and Different Names
    AOP详解
    Spring集成JUnit测试
    Spring整合web开发
    IOC装配Bean(注解方式)
    IOC装配Bean(XML方式)
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6994946.html
Copyright © 2020-2023  润新知