对相同类型的依赖项进行分组的推荐方法是什么?

问题描述 投票:0回答:1

我想按类型分隔项目中的依赖项,并考虑通过以下方式这样做:

// Implementation dependencies
dependencies {
    implementation("foo:bar:1") {
        because("reason 1")
    }

    implementation("foo:bar:2") {
        because("reason 2")
    }

    implementation("foo:bar:3") {
        because("reason 3")
    }
}

// Test implementation dependencies
dependencies {
    testImplementation("foo:bar:4") {
        because("reason 4")
    }

    testImplementation("foo:bar:5") {
        because("reason 5")
    }
}

问题:

  1. 我可以通过这种方式构建了构建文件之后,就可以构建项目,但是我看不到任何权威材料说明正式支持指定多个dependencies块。是否存在这种材料?

  2. 是否有比此方法更好的按类型分隔依赖项的方法?最好,我希望每个模块都有一个依赖项配置(implementationtestImplementation等),以便像上面的配置那样记录包括每个模块的原因。

gradle kotlin gradle-kotlin-dsl
1个回答
0
投票

我看不到任何权威材料说明正式支持指定多个dependencies块。是否存在这种材料?

不需要任何材料,因为Gradle DSL(Groovy或Kotlin)不是什么特别的或不可思议的东西。它只是Gradle API上的糖。

指定多个dependencies块是完全合法的。如果要对Gradle DSL进行除糖,则实际上只是在调用多个dependencies块:

project.getDependencies().add("implementation", "foo:bar:1")
project.getDependencies().add("testImplementation", "foo:bar:4")

与简单地多次在add(...)上调用List方法没有什么不同。

是否有比这更优选的按类型分隔依赖关系的方法?

创建一个将依赖项捆绑在一起的库(项目或子项目)。使用Java Library Plugin可以轻松实现。例如,对于您的测试库:

dependencies {
    api("foo:bar:4") {
        because("reason 4")
    }
    api("foo:bar:5") {
        because("reason 5")
    }
}

然后简单地使用主项目中的库:

dependencies {
    testImplementation(project(":my-test-library")) {
        because("bundles test libs")
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.