gpt4 book ai didi

plugins - 编写可发布的 buildSrc Gradle 插件

转载 作者:行者123 更新时间:2023-12-03 02:41:42 26 4
gpt4 key购买 nike

我正在为我的公司编写一个自定义 Gradle 插件,以协助对我们的产品进行集成测试。我的团队希望在主要产品构建中构建和使用该插件(就像“buildSrc”插件一样),但还需要将该插件作为工件发布,以供其他团队与我们的产品集成使用。

如果我尝试将其作为独立插件包含在 settings.gradle 中文件,然后将其作为依赖项包含在 buildscript 中,它显然不起作用,因为 buildscript block 首先被解释。

我还尝试从 buildscript 中运行另一个构建,如下所示:

buildscript {
def connection = GradleConnector.newConnector()
.forProjectDirectory(file("${project.projectDir}/theplugin"))
.connect()

try {
connection.newBuild()
.forTasks('clean', 'build', 'install')
.run()
} finally {
connection.close()
}

repositories {
mavenLocal()
...
}

dependencies {
classpath 'com.company.product.gradle.theplugin'
}
}

这会导致插件被构建并放置在本地 Maven 存储库中,但随后初始 Gradle 构建直接失败,因为它无法解析新构建的存档。如果我再次运行它,它可以工作。我不明白这种行为。

我可能会用这种方法陷入困境。有没有办法以一种不那么“hacky”的方式完成这项工作?

最佳答案

我发现了一个 hacky 方法来实现这一点:将插件符号链接(symbolic link)到 buildSrc(至少在 *nix 上)。

项目目录

project/
buildSrc/ -> gradle_plugins/
gradle_plugins/
pluginA/
pluginB/
...
build.gradle
settings.gradle
...
build.gradle
settings.gradle

项目/settings.gradle
include 'gradle_plugins:pluginA'
include 'gradle_plugins:pluginB'
...

项目/gradle_plugins/settings.gradle
include 'pluginA'
include 'pluginB'
...

项目/gradle_plugins/build.gradle
...
rootProject.dependencies {
runtime project(path)
}
...

关于plugins - 编写可发布的 buildSrc Gradle 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25773328/

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