首页 > 解决方案 > Gradle:处理依赖项更改

问题描述

我有命令行工具,假设awsomeBuilder我需要构建一些异国情调的项目。

该工具有两个期望:

  1. 所有jar-file-dependencies 都包含在项目目录中的某个位置
  2. 所有jar的文件依赖都在一些整洁的、巨大的 XML 文件中引用

我想使用 gradle 管理这些依赖项,所以我声明了一个新的

configurations {
   awsomebuilder
}

配置。在此配置中,我添加了我的依赖项

dependencies {
    awsomebuilder 'com.google.guava:guava:28.0-jre'
}

目前我有这两个任务:

task fetchAwsomeDependencies(type:Copy, group:"awsomeBuilder") {
    from configurations.awsomebuilder
    into "libs"
}

task buildAwsome(type:Exec, group:"awsomeBuilder") {
    ext.outputDir = layout.buildDirectory.dir("awsome_build").get()
    dependsOn(fetchAwsomeDependencies)
    commandLine 'cmd', '/c', 'awsomeBuilder', '-o', file("${outputDir}").absolutePath
    ignoreExitValue true
    outputs.dir outputDir
}

我的问题是,如果我更改依赖项,我只会复制新的依赖项。我不会删除旧的。
一种解决方案是,始终首先删除所有内容,lib然后复制新的依赖项。虽然这对于 lib 目录来说很简单(尽管可能效率低下),但我还需要更改配置 XML 文件,而在这里它变得乏味。

AFAIK,gradle 跟踪依赖项更改,因此它可以决定仅在必要时运行任务。
这让我想知道,是否可以查询 gradle 以获取依赖项更改列表:删除这个,添加那个,......

或者是否有任何很酷的技巧可以尽可能干净地解决我的问题。

标签: gradlebuild.gradle

解决方案


推荐阅读