Gradle: 查找使用 + 导入的依赖项的已解决版本
Gradle: find resolved version of a dependency imported with +
我想在 gradle 中打印 dependency
的最后一个版本。
我以这种方式添加了依赖项:
compile 'test:test:+'
现在我想打印依赖的版本,因为我想知道我使用的是哪个版本。
我是这样使用的:
gradle dependencyInsight --configuration compile --dependency test:test
但我的输出是这样的:
+--- test:test:+ -> project : (*)
无论如何我可以获得我的依赖项的真实版本而不是+
?
在 app
模块的 build.gradle
中,我按如下方式导入了 Square 的 Moshi 库:
dependencies {
compile 'com.squareup.moshi:moshi:+'
}
然后我在终端中执行了以下命令:
./gradlew app:dependencyInsight --configuration compile --dependency com.squareup.moshi:moshi
这是我收到的输出:
如果你想查看所有依赖项的概览,你可以使用此命令查看 -
解决方案 1-
./gradlew app:dependencies
或者
解决方案2-
如果你想检查任何特定的 dependency.you 可以使用 gradles 的内置 'dependencyInsight : -
gradle dependencyInsight --configuration compile --dependency compile 'test:test:+'
或
解决方案 3-
你可以查看你的项目.idea文件夹
在您的项目中 -> .idea/libraries
您还可以看到使用的依赖项的最终版本。
所有简单、开放的视图项目层次结构并查看外部库
添加依赖项后 "compile 'test:test:+'" 构建项目。
然后在“Project”文件夹结构层次结构中找到文件夹结构最底部的“External Libraries”中的依赖项,它将连同它的版本在那里。将该版本与您的依赖项一起使用,然后再次 re-sync/build 项目。
您可以执行以下操作:
- 使用包含您的 jar 文件的配置
- 过滤 jar 文件的名称
- 打印结果
这将打印完整路径和版本。如果需要,您可以只提取 jar 名称。
task printPmdVersion << {
FileTree pmdJar = zipTree(configurations.pmd.filter {
dep -> dep.name.contains("pmd-core")
}.singleFile)
println pmdJar
}
输出示例:
ZIP '/home/user/java/gradle_user_home/caches/modules-2/files-2.1/net.sourceforge.pmd/pmd-core/5.4.1/28715c2f768b58759bb5b373365997c30ac35899/pmd-core-5.4.1.jar'
最好不要使用“+”号来始终使用最新的库版本,因为如果需要,您将无法获得可重复的构建。
我的意思是,如果您必须从您的源代码控制管理系统(例如 Git)中检查您以前的 APK 版本,您知道它工作正常,如果您今天编译(新的库版本可能有已发布)...也许您的老朋友 APK 运行良好...现在它不像您最新的那样运行良好。
就是说我建议您使用这样的 gradle 插件:
https://github.com/ben-manes/gradle-versions-plugin
您将在您的 build.gradle 中像这样在项目级别安装:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
apply plugin: 'com.github.ben-manes.versions'
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.github.ben-manes:gradle-versions-plugin:0.17.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
你会发现一个名为 dependencyUpdate
的新 gradle 任务,如果你吃午饭,它会报告你所有的库版本与最新版本的比较:
------------------------------------------------------------
: Project Dependency Updates (report to plain text file)
------------------------------------------------------------
The following dependencies are using the latest milestone version:
- com.github.ben-manes:gradle-versions-plugin:0.17.0
- junit:junit:4.12
The following dependencies have later milestone versions:
- com.android.support:appcompat-v7 [26.1.0 -> 27.0.2]
- com.android.support.constraint:constraint-layout [1.0.2 -> 1.1.0-beta5]
- com.android.support.test.espresso:espresso-core [3.0.1 -> 3.0.2-alpha1]
- com.android.tools.build:gradle [3.0.1 -> 3.2.0-alpha03]
- org.jacoco:org.jacoco.agent [0.7.4.201502262128 -> 0.8.0]
- org.jacoco:org.jacoco.ant [0.7.4.201502262128 -> 0.8.0]
- com.android.support.test:runner [1.0.1 -> 1.0.2-alpha1]
我想在 gradle 中打印 dependency
的最后一个版本。
我以这种方式添加了依赖项:
compile 'test:test:+'
现在我想打印依赖的版本,因为我想知道我使用的是哪个版本。
我是这样使用的:
gradle dependencyInsight --configuration compile --dependency test:test
但我的输出是这样的:
+--- test:test:+ -> project : (*)
无论如何我可以获得我的依赖项的真实版本而不是+
?
在 app
模块的 build.gradle
中,我按如下方式导入了 Square 的 Moshi 库:
dependencies {
compile 'com.squareup.moshi:moshi:+'
}
然后我在终端中执行了以下命令:
./gradlew app:dependencyInsight --configuration compile --dependency com.squareup.moshi:moshi
这是我收到的输出:
如果你想查看所有依赖项的概览,你可以使用此命令查看 -
解决方案 1-
./gradlew app:dependencies
或者
解决方案2-
如果你想检查任何特定的 dependency.you 可以使用 gradles 的内置 'dependencyInsight : -
gradle dependencyInsight --configuration compile --dependency compile 'test:test:+'
或
解决方案 3-
你可以查看你的项目.idea文件夹
在您的项目中 -> .idea/libraries
您还可以看到使用的依赖项的最终版本。
所有简单、开放的视图项目层次结构并查看外部库
添加依赖项后 "compile 'test:test:+'" 构建项目。
然后在“Project”文件夹结构层次结构中找到文件夹结构最底部的“External Libraries”中的依赖项,它将连同它的版本在那里。将该版本与您的依赖项一起使用,然后再次 re-sync/build 项目。
您可以执行以下操作:
- 使用包含您的 jar 文件的配置
- 过滤 jar 文件的名称
- 打印结果
这将打印完整路径和版本。如果需要,您可以只提取 jar 名称。
task printPmdVersion << {
FileTree pmdJar = zipTree(configurations.pmd.filter {
dep -> dep.name.contains("pmd-core")
}.singleFile)
println pmdJar
}
输出示例:
ZIP '/home/user/java/gradle_user_home/caches/modules-2/files-2.1/net.sourceforge.pmd/pmd-core/5.4.1/28715c2f768b58759bb5b373365997c30ac35899/pmd-core-5.4.1.jar'
最好不要使用“+”号来始终使用最新的库版本,因为如果需要,您将无法获得可重复的构建。
我的意思是,如果您必须从您的源代码控制管理系统(例如 Git)中检查您以前的 APK 版本,您知道它工作正常,如果您今天编译(新的库版本可能有已发布)...也许您的老朋友 APK 运行良好...现在它不像您最新的那样运行良好。
就是说我建议您使用这样的 gradle 插件:
https://github.com/ben-manes/gradle-versions-plugin
您将在您的 build.gradle 中像这样在项目级别安装:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
apply plugin: 'com.github.ben-manes.versions'
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.github.ben-manes:gradle-versions-plugin:0.17.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
你会发现一个名为 dependencyUpdate
的新 gradle 任务,如果你吃午饭,它会报告你所有的库版本与最新版本的比较:
------------------------------------------------------------
: Project Dependency Updates (report to plain text file)
------------------------------------------------------------
The following dependencies are using the latest milestone version:
- com.github.ben-manes:gradle-versions-plugin:0.17.0
- junit:junit:4.12
The following dependencies have later milestone versions:
- com.android.support:appcompat-v7 [26.1.0 -> 27.0.2]
- com.android.support.constraint:constraint-layout [1.0.2 -> 1.1.0-beta5]
- com.android.support.test.espresso:espresso-core [3.0.1 -> 3.0.2-alpha1]
- com.android.tools.build:gradle [3.0.1 -> 3.2.0-alpha03]
- org.jacoco:org.jacoco.agent [0.7.4.201502262128 -> 0.8.0]
- org.jacoco:org.jacoco.ant [0.7.4.201502262128 -> 0.8.0]
- com.android.support.test:runner [1.0.1 -> 1.0.2-alpha1]