gpt4 book ai didi

java - 自定义独立 gradle 插件不像通常的 build.gradle 代码那么强大?

转载 作者:行者123 更新时间:2023-11-30 07:14:42 25 4
gpt4 key购买 nike

很抱歉,如果这看起来是一个愚蠢的问题。但我是 Java 和 Gradle 的初学者,有时我确实会遇到“Gradle 文档”的问题。

我只是想找到一种简单的方法来重用项目的 build.gradle 文件中的代码。因此,将此代码打包到一个插件中,并在我的公司存储库中上传和版本控制似乎是理想的选择。但这些独立插件是 java/groovy 项目/程序,其语法与 gradle DSL 不同。所以它们不会促进与 gradle.build 文件中相同的可能性和关闭,对吗?

例如,如果我想要一个可重用的存储库闭包,如下所示:

repositories {
maven {
url project.Repo_GP_Internal
credentials {
username project.Repo_GP_User
}
}
}

或者 uploadArchives 闭包:

uploadArchives {
repositories {
mavenDeployer {
repository(url: Repo_Upload_Internal){
authentication(userName: project.Repo_Upload_User, password: project.Repo_Upload_Pass)
}
snapshotRepository(url: Repo_Upload_Snapshot){
authentication(userName: project.Repo_Upload_User, password: project.Repo_Upload_Pass)
}
}
}
}

我可以以任何方式将其打包到一个插件中,然后将其作为 jar 上传到我的存储库吗?正如您所看到的,它是关于配置阶段的代码。

提前谢谢您。

最佳答案

您绝对也可以使用插件中 build.gradle 中可用的所有功能。

build.gradle 文件本质上只是一个使用项目对象集作为委托(delegate)执行的 groovy 脚本,您在其中使用的大多数魔术词(例如 task)都只是 Project 的方法。类(class)。最显着的区别是,在自定义插件或任务中,您必须显式地与项目交互。

像这样的事情应该可以解决问题:

class MyPlugin implements Plugin<Project> {
void apply(Project project) {
project.repositories {
maven {
url project.Repo_GP_Internal
credentials {
username project.Repo_GP_User
}
}
}
}
}

有关repositories闭包内可用的方法,请参阅documentation for RepositoryHandler

当然,仍然存在您的项目将如何访问您的插件的问题。例如,它可能从 Maven 存储库检索它,在这种情况下,您需要在每个项目中显式使用该 Maven 存储库参数定义 buildscript { repositories {

关于java - 自定义独立 gradle 插件不像通常的 build.gradle 代码那么强大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38639827/

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