惰性评估Gradle依赖项定义

时间:2014-02-11 07:35:33

标签: plugins gradle

我正在编写一个需要使用外部库的Gradle插件。我希望该库的版本可以由插件的用户从他的build.gradle文件中定义。

我目前在构建脚本的评估之后定义了依赖项,我想知道当插件是应用时是否有一种方法来定义它,具有依赖项信息(名称,组,版本等...)在解决依赖关系时进行评估。

换句话说,是否可以使用与约定映射类似的东西来设置依赖项的字段?

2 个答案:

答案 0 :(得分:1)

我认为Dependency是启用了约定映射。对于另一种方法,请参阅Gradle自己的代码质量插件,所有这些插件都允许在其扩展对象上设置toolVersion(例如CheckstyleExtension)。

答案 1 :(得分:0)

在下面,您可以找到一个自包含的build.gradle文件,该文件演示了如何懒惰地评估依赖版本。如果运行./gradlew dependencies,则会看到消息“现在才计算版本”。如果您运行./gradlew projects,则不会看到该消息。

repositories {
    jcenter()
}

configurations {
    myConfig
}

configurations.myConfig.defaultDependencies { deps ->
    // here you can perform whichever calculation is needed to be run lazily,
    // e.g., to get the version from some external file or from the extension of
    // a Gradle plugin
    println 'Calculating the version only now'
    def calculatedVersion = '4.12'

    // JUnit used for demo purposes only
    deps.add(project.dependencies.create("junit:junit:$calculatedVersion"))
}

defaultDependencies方法很有趣,或者您也可以使用withDependencies