gpt4 book ai didi

java - 如何为 gradle 存储库定义辅助方法?

转载 作者:行者123 更新时间:2023-11-29 08:34:28 24 4
gpt4 key购买 nike

Gradle 脚本有快捷函数来定义常见的众所周知的存储库,例如

repositories {
mavenCentral()
}

我想定义我自己的快捷函数,比如 myPrivateMavenRepo() 这样我就可以写出类似

的东西
repositories {
mavenCentral()
myPrivateMavenRepo()
}

而不是

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

问题:

  • 如何开发自定义 repo 函数?
  • 此自定义函数托管在哪里?
  • 我有很多要切换到 gradle 的存储库 我不想使用存储库 Url 对每个 build.gradle 文件进行硬编码 我如何以易于引导的方式集中它?

最佳答案

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()
}

关于java - 如何为 gradle 存储库定义辅助方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45422416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com