Я пытаюсь извлечь информацию о зависимостях gradle из build.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, который может генерировать JSON-отчет, который перечисляет веб-сайт проектаот .
Есть ли способ сделать это?