gpt4 book ai didi

json - 有没有办法从gradle依赖项中提取项目URL和最新可用版本?

转载 作者:行者123 更新时间:2023-12-03 05:33:25 29 4
gpt4 key购买 nike

我正在尝试从build.gradle中提取有关gradle依赖项的信息,并将其打包为JSON字符串以供其他地方使用。

我正在尝试做的一个小例子:

来自app/build.gradle

android {
...
}

dependencies {
implementation 'androidx.appcompat:appcompat:1.0.0'
}

我想获取(以JSON形式)如下所示:
...
{
"name": "androidx.appcompat:appcompat",
"source": "google",
"installed": {
"version": "1.0.0"
},
"latest": {
"version": "1.1.0"
}
"projectUrl": "https://dl.google.com/dl/android/maven2/index.html",
"license": "Apache 2.0 <http://www.apache.org/licenses/LICENSE-2.0>"
}
...

到目前为止,我已经设法获得了一半的信息,如下所示:
configurations {
myConfig.extendsFrom implementation
}

task printSolvedDepsTreeInJson {
doLast {
def jsonOutput = "["
configurations.myConfig.resolvedConfiguration.firstLevelModuleDependencies.each { dep ->
def addToJson
addToJson = { resolvedDep ->
jsonOutput += "\n{\n"
jsonOutput += "\t\"name\": \"${resolvedDep.module.id.group}:${resolvedDep.module.id.name}\",\n"
if (resolvedDep.module.id.group.contains("android") || resolvedDep.module.id.group.contains("google")) {
jsonOutput += "\t\"source\": \"google\",\n"
} else {
jsonOutput += "\t\"source\": \"jcenter\",\n"
}
jsonOutput += "\t\"installed\": {\n\t\t\"version\": \"${resolvedDep.module.id.version}\"\n\t},\n"
jsonOutput += "},"
}
addToJson(dep)
}
if (jsonOutput[-1] == ',') {
jsonOutput = jsonOutput[0..-2]
}
jsonOutput += "\n]"
println jsonOutput
}
}

但是我找不到有关如何找到gradle依赖关系的最新版本的任何文档(并且我知道此信息在某处,因为Android Studio为您提供了有关较新版本的 lint消息)。我还想包括依赖项的URL(例如,如果是开源的github链接),由于我找到了 gradle plugin that can generate a JSON report which lists the website the project is from,所以我再次认为应该可行。

有什么办法吗?

最佳答案

为什么不依靠您提到的确切插件(Ben Manes' Gradle Versions Plugin)为您完成工作?您可以依赖dependencyUpdates任务,然后解析输出以在自己的报告中使用。

否则,您可以看看该插件的实现方式。我相信它复制了配置,但是有一个依赖关系解析规则,该规则用动态声明latest.release替换了该版本(请参阅该here的文档),然后让Gradle对其进行解析。

关于json - 有没有办法从gradle依赖项中提取项目URL和最新可用版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58019616/

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