Gradle 1.12用戶指南翻譯——第三十八章. Eclipse 插件

本文由CSDN博客萬一博主翻譯,其它章節的翻譯請參見:html

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

翻譯項目請關注Github上的地址:android

https://github.com/msdx/gradledocgit

本文翻譯所在分支:
github

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

直接瀏覽雙語版的文檔請訪問:api

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

另外,Android 手機用戶可經過我寫的一個程序瀏覽文檔,帶緩存功能的,眼下0.2.1版本號兼容 android 2.2以上系統。地址例如如下:app

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

翻譯不易,轉載請註明本文在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'
}
相關文章
相關標籤/搜索