如何在 gradle 中正确使用 `strictly`

How to correctly use `strictly` with gradle

在 gradle 6.7.1 中,我正在尝试使用 strictly 为传递依赖指定一系列版本。

在上面链接的文档中,它说

For example, [...] instead of strictly 1.0, that it strictly depends on the [1.0, 2.0[ range, but prefers 1.0.

我正在尝试建议的方法,我想在其中指定一个具有最低版本但没有最高版本的范围。我这样做如下:

def LIB_MIN_VERSION = '2.16.0'

testCompile('some-library') {
  version {
    strictly [LIB_MIN_VERSION,)
  }
}

the documentation on versioning开始,)表示排他bound,缺少upper bound就没有upper bound

当我 运行 ./gradlew dependencies 时,我得到这个错误:

> startup failed:
  build file '/home/shane/src/flink-svc/build.gradle': 119: expecting ']', found ')' @ line 119, column 33.
           strictly [LIB_MIN_VERSION,)
                                     ^

如果我更改为 strictly [LIB_MIN_VERSION,] 并重新 运行,则会收到此错误:

> Could not get unknown property 'strictly' for  of type org.gradle.api.internal.artifacts.dependencies.DefaultMutableVersionConstraint.

我的 gradle 版本可能不提供此范围功能吗?还是我犯了语法错误?


我尝试了@Slaw 的建议,将范围引用为 strictly '[LIB_MIN_VERSION,)'。当我这样做时,我没有收到错误 运行ning ./gradlew dependencies,但在输出中分辨率显示为失败:

some-library:{strictly [LIB_MIN_VERSION,)} FAILED

如果我在没有范围的情况下使用 strictly LIB_MIN_VERSION(with 是不可取的),那么我不会得到 FAILED:

some-library:{strictly 2.16.0} -> 2.16.0

如果我尝试将 Groovy 字符串插值与 strictly "[${LOG4J_LIB_VERSION},)":

一起使用,依赖项解析也会显示为 FAILED
some-library:{strictly [2.16.0,)} FAILED

问题(据我所知)是 Gradle 6.7.1 不支持此语法。一旦我升级到 7.0,它使用 Groovy 字符串插值工作,如下所示:

strictly "[${LOG4J_LIB_VERSION},)"