bash脚本或Python来解析gradle依赖项

ddrv8njm  于 2023-06-23  发布在  Python
关注(0)|答案(3)|浏览(113)

我希望写一个bash脚本来解析gradle构建文件,并生成一个列表,它有什么依赖关系。我还需要考虑依赖版本号是变量(在根级gradle文件中定义)。
任何关于我如何去这件事的建议都将不胜感激。谢谢你。
示例Gradle:

apply plugin: 'com.android.application'

android {
  ....
}

dependencies {

  compile "com.android.support:design:$support"
  compile "com.android.support:cardview-v7:$support"
  compile "com.mixpanel.android:mixpanel-android:$mixpanel"
  compile "com.google.firebase:firebase-core:$playServices"
  compile 'io.reactivex:rxandroid:1.2.0'
}

示例输出:

com.android.support:design:25.3.1
com.android.support:cardview-v7:25.3.1
com.mixpanel.android:mixpanel-android:4.8.7
com.google.firebase:firebase-core:11.0.2
io.reactivex:rxandroid:1.2.0
u2nhd7ah

u2nhd7ah1#

为什么要重新发明轮子?
使用gradle:

./gradlew app:dependencies [--configuration implementation]

你得到的树可能比你用脚本提取的要复杂得多。

0qx6xfy6

0qx6xfy62#

使用这个:

#!/bin/bash
#
support="25.3.1"
mixpanel="4.8.7"
playServices="11.0.2"

results=$(grep compile input.txt | awk '{print $2}' | tr -d '"' | tr -d "'")
eval echo $results | sed 's/ /\n/g'
  • awk删除编译字
  • 第一个tr移除“
  • 第二个tr删除'
  • eval用变量的值替换变量
  • sed将每行之间的空格替换为\n
ffvjumwh

ffvjumwh3#

为什么你不能简单地使用gradle附带的依赖生成器。如果您有GradleWrapper,只需使用这个

./gradlew :allDeps > oputput.txt

相关问题