2016-01-27 60 views
0

是的,我確實需要應用'maven'和'artifactory'插件。但是,有許多現有的Jenkins作業顯式調用'uploadArchives'(由maven插件提供)。我想在我自己的插件中重寫這個,當'uploadArchives'被使用時強制它調用'artifactoryPublish'。在gradle插件中,如何用artifactory插件'artifactoryPublish'替換Maven插件'uploadArchives'?

我想在我的插件中以編程方式執行此操作,而不是更改數百個build.gradle文件,並且我嘗試了所有目前爲止沒有運氣可以考慮的每種調用組合。

最後一點需要注意的是,至少要使用Gradle 2.4,因爲正在使用gradle包裝,並且在一組構建中調用了幾個不同版本的gradle。

任何人都有如何完成這個想法?

這是我試過的最新的東西:

project.getTasks()代替( 'uploadArchives',MyTask)

雖然構造函數被調用(由一個println消息驗證),任務本身從未被調用過(通過添加一個明確的'throw'語句並且從未看到異常來驗證)。

+0

你是否必須重寫該任務?補充工作嗎? – RaGe

+0

另外,一旦你成功地構建你的插件,你不必再將你的插件添加到數百個build.gradle文件中嗎? – RaGe

+0

我不希望任何人使用uploadArchives,但可能有幾百個現有的自動作業調用它。所以,如果這些工作能夠調用我的東西,而不必更改所有這些工作,那將會很有幫助。至於添加我的插件,這已經完成 - 我只是改變實現。 –

回答

0

只是爲了澄清...

我要重寫uploadArchives 3個主要原因:

  • 許多現有的工作(以及程序員的手指)與 uploadArchives在編程

  • 我們想要額外的信息artifactoryPublish創建和上傳, 特別是如果通過詹金斯插件完成,所以你得到詹金斯作業 號碼等

  • 我們不希望任何人使用普通的uploadArchives和發佈 沒有額外的編譯信息。

我終於找到了自己的答案......它不是完全明瞭,但沒有工作,因爲我們希望,除了在構建過程中有關uploadArchives額外的輸出線。

project.plugins.apply('com.jfrog.artifactory') 
    project.getTasks().create([name: 'uploadArchives', type: MyOverrideTask, overwrite: true, dependsOn: ['artifactoryPublish'] as String[], group: 'Upload']) 

是的,我可以使其取決於artifactoryPublish後剛剛禁用uploadArchives,但後來不是在生成過程中只打印「uploadArchives」,它打印「uploadArchives [跳過]」,而我們不希望有任何混淆。