Gradle配置 "builtBy"一个任务

标签 gradle dependencies directed-acyclic-graphs

考虑以下构建脚本

configurations {
    myConfig
}
task addToMyConfig {
    doLast {
        println "Doing some work"
        dependencies {
            myConfig 'log4j:log4j:1.2.17'
        }
    }
}
task useMyConfig {
    doLast {
        println "myConfig = $configurations.myConfig.files"
    }
}

问题:有没有办法在每次解析 configurations.myConfig 时触发 addToMyConfig,而不添加任务依赖项,其中 useMyConfig 依赖于 addToMyConfig

我想说:

configurations.myConfig.builtBy addToMyConfig

**我不想说**

useMyConfig.dependsOn addToMyConfig 

我想避免 useMyConfig.dependsOn addToMyConfig 因为可能有很多任务消耗 configurations.myConfig

注意:有一个 ConfigurableFileCollection.builtBy(Object... tasks)可以解决我的问题的方法,只要它存在于 Configuration 上即可接口(interface)(配置扩展FileCollection)

最佳答案

您真的需要一个任务来使用依赖项填充配置吗?

Configuration#withDependencies可用于在解析期间添加依赖项。像这样:

configurations {
  myConfig
}

configurations.myConfig.withDependencies {deps ->
  println "Resolving dependencies"
  dependencies {
    myConfig "log4j:log4j:1.2.17"
  }
}

task useMyConfig {
    doLast {
        println "myConfig = $configurations.myConfig.files"
    }
}

关于Gradle配置 "builtBy"一个任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49295791/

相关文章:

java - 如何访问Docker容器中存储在 'src/main/resources/someFolder'中的应用程序资源文件?

dependencies - 在计算机科学中,依赖的反面是什么?

Oracle构建顺序和PL/SQL软件包依赖关系

javascript - 使用不带 DOT 的 d3.js 的有向无环图

directed-acyclic-graphs - Condor DAG 文件 - 有很多 child 的 parent 。用多行而不是一行表示 child 的 parent 是否合法?

gradle - 想法gradle项目无法正确解决依赖关系

gradle - Android Gradle插件API用于开发

gradle - 从文件中读取字符串,并将其放入build.gradle文件中的数组

scala - 如何配置 sbt/ScalaTest 以从依赖项目加载测试配置?

python - 根据文件系统更改触发 Airflow dag