Gradle脚本具有快捷功能,用于定义常见的知名存储库,例如
repositories {
mavenCentral()
}
我想定义自己的快捷函数,例如myPrivateMavenRepo()
,以便我可以编写类似
repositories {
mavenCentral()
myPrivateMavenRepo()
}
而不是
repositories {
mavenCentral()
maven {
url "http://repo.mycompany.com/maven2"
}
}
问题:
答案 0 :(得分:2)
repositories
闭包中的方法由RepositoryHandler
接口定义。在mavenCentral()
,mavenLocal()
和jcenter()
添加预定义的存储库时,所有其他方法都需要配置关闭,操作或映射,这些方法将应用于新的ArtifactRepository
。
一种简单的方法是定义这样的配置闭包,动作或地图,并通过插件扩展提供它们:
repositories {
mavenCentral()
maven myPluginExtension.myRepoClosure
}
由于RepositoryHandler
也是ArtifactRepositoryContainer
,您可以直接使用其add
等修改方法来创建和注册ArtifactRepository
个对象:
repositories {
jcenter()
add myPluginExtension.myRepo
}
如果您想直接向RepositoryHandler
添加方法,可以alter its meta class。请注意,这是一个Groovy功能,因此您只能在Groovy插件中使用它,而不能在Java插件中使用它。
project.repositories.metaClass.myRepo {
// implement logic to add repository (e.g. call maven(closure) ...)
}
该方法将在您的构建脚本中提供:
repositories {
mavenLocal()
myRepo()
}
答案 1 :(得分:2)
我认为你可能会这样做
allprojects {
repositories.ext.myPrivateMavenRepo = {
repositories.maven {
url: 'http://repo.mycompany.com/maven2'
}
}
}
用法
repositories {
myPrivateMavenRepo()
}
您可以轻松将其转换为插件