2017-07-31 22 views
0

搖籃腳本具有快捷功能,以確定共同衆所周知庫,例如如何定義gradle存儲庫的幫助器方法?

repositories { 
    mavenCentral() 
} 

我想定義自己的快捷功能類似myPrivateMavenRepo(),這樣我可以寫類似

repositories { 
    mavenCentral() 
    myPrivateMavenRepo() 
} 

相反比

repositories { 
    mavenCentral() 
    maven { 
     url "http://repo.mycompany.com/maven2" 
    } 
} 

問題:

  • 如何開發自定義回購功能?
  • 這個自定義函數在哪裏託管?
  • 我有很多回購,我想切換到gradle我不想硬編碼每個build.gradle文件與回購網址我如何集中這種易於引導的方式?
+0

Probabaly你正在尋找https://stackoverflow.com/questions/27777591/how-to-define-and-call-custom-methods-in-build-gradle – Akash

回答

1

repositories閉包中的方法由RepositoryHandler接口定義。雖然mavenCentral()mavenLocal()jcenter()添加預定義的存儲庫,但所有其他方法都需要配置關閉,操作或映射,這些將應用於新的ArtifactRepository

一個簡單的方法是定義這樣的配置倒閉,訴訟或地圖,並通過插件擴展爲他們提供:

repositories { 
    mavenCentral() 
    maven myPluginExtension.myRepoClosure 
} 

由於RepositoryHandler也是ArtifactRepositoryContainer,你可以使用它的修改方法,如add直接如果您想直接方法添加到RepositoryHandler,可以alter its meta class

repositories { 
    jcenter() 
    add myPluginExtension.myRepo 
} 

:創建並註冊ArtifactRepository對象。請注意,這是一個Groovy特性,所以你只能在Groovy插件中使用它,而不是Java插件。

project.repositories.metaClass.myRepo { 
    // implement logic to add repository (e.g. call maven(closure) ...) 
} 

的方法將是在生成腳本可用:

repositories { 
    mavenLocal() 
    myRepo() 
} 
0

我想你可以做很可能

allprojects { 
    repositories.ext.myPrivateMavenRepo = { 
     repositories.maven { 
      url: 'http://repo.mycompany.com/maven2' 
     } 
    } 
} 

你可以很容易地把它轉換成一個插件

相關問題