2013-12-08 120 views
4

如何編寫自定義gradle插件來處理自定義模塊描述符中的依賴項? Gradle文檔說明如下,但我一直沒能找到任何能告訴我如何如何Gradle中的自定義依賴關係管理插件

即使你的項目使用自定義的依賴關係管理系統或 像一個Eclipse .classpath文件作爲主數據 依賴管理,這是很容易寫一個搖籃插件使用 這個數據在搖籃。

我一直保持Custom Ivy resolver for ATG projects(從this project分叉),但最近搖籃與1.8版本棄用這一點,我需要移植的實施,原生搖籃插件。

ATG的實現使用'模塊'(與Gradle項目不同),它具有模塊描述符的MANIFEST.MF文件。這些文件定義了模塊依賴的其他「模塊」,以及構成當前模塊的(直接)類路徑的路徑列表(jar或目錄)。

例如

ATG-Class-Path: lib/classes.jar lib/commons-beanutils-1.7.jar 
ATG-Required: MyProj.core MyProj.integration.webservices DAF.Endeca.Assembler 

模塊依賴關係是傳遞性的,可能是指ATG產品安裝中的自定義模塊或模塊。因此,我需要定義一個可以使用ATG產品安裝作爲工件源的自定義存儲庫。

沒有搖籃,我需要的

  1. 的形式來維持依賴ATG的MANIFEST.MF文件
  2. 的Eclipse .classpath文件
  3. 依存關係的Ant構建腳本
  4. SonarQube配置

由於我無法擺脫ATG MANIFEST.MF文件,我會喜歡寫一個自定義插件來允許它們在Gradle構建中使用。然後,我可以使用Gradle作爲我的構建系統,也可以生成Eclipse .classpath和.project文件,並針對該項目運行Sonar。

Gradle似乎有很多源代碼,在過去的幾天翻找它並沒有給我帶來任何地方。 (1)實現定製庫,(2)實現自定義的依賴關係解析器(使用定製文件作爲模塊描述符),應該是這樣的:如果有人可以指向我需要實現的接口列表,足以讓我開始。

回答

0

上面提到的Eclipse .classpath用例可以通過解析該文件並將其轉換爲Gradle文件相關性來解決。目前無法插入自定義存儲庫實現。

+0

瞭解如何處理'.classpath'文件將至少解決一半我的問題,所以如果你能解釋這是如何工作的,它會有所幫助。 –

+0

解析'.classpath'文件(例如使用Groovy的'XmlSlurper'類)並添加文件依賴關係,這與您在普通構建腳本中使用的方式相同。 –