【问题标题】:Does it make any sense to use the '+' sign for gradle/maven dependencies declaration?对 gradle/maven 依赖项声明使用“+”号是否有意义?
【发布时间】:2017-07-27 09:52:54
【问题描述】:

目前我有大约 100 个项目(微服务)。 还有一项可能与其中一半有关的任务。 在迭代项目时,我发现其中一些项目比一年多前更新了。

问题是:依赖版本解析。我们这样声明它们

compile group: 'org.apache.xmlgraphics', name: 'batik-ext', version: "1.+"

因此,实际版本并不是严格固定的,并且会随着时间的推移而发展。 所以我的一些项目在这样的演变中面临着破损的 API。

我认为最好冻结版本并确保存储库中的源可随时编译。

【问题讨论】:

  • 我总是说没有使用固定版本,因为版本范围使您根据定义构建不可复制...
  • 1.您可以为 dependencies.gradle 之类的依赖项创建一个占位符并将其放在 $rootDir/gradle 中,然后理想情况下应该使用静态版本,因为如果库的供应商更改了 API,将来可能会破坏您的代码。 2. 我将此问题标记为基于意见。请提出一个具体的问题。

标签: java maven gradle dependencies


【解决方案1】:

刚才我测试了这段代码会发生什么:

compile group: 'org.apache.xmlgraphics', name: 'batik-ext', version: "1.+"

它的作用是,当我们进行 gradle build/refresh 依赖时,我们得到的是 1.xx 的最新版本。因此,如果最新版本是 1.12(2017 年 7 月),并且您在 1.2 是最新版本时添加了 jar 作为项目的依赖项,那么如果您在 build.gradle 中提供上述常规代码并构建应用程序,最新的即 1.12 将被加载在您的 .gradle 文件夹中。

因此,如果您需要冻结特定版本,请将其指定为:

compile group: 'org.apache.xmlgraphics', name: 'batik-ext', version: "1.2"

这样您的应用程序就不会中断。

始终建议保持静态版本以按预期运行您的应用程序,因为随着时间的推移,版本会随着 jar 中的类的一些变化而不断变化。

我有使用这些罐子的经验:

编译组:'org.jboss.resteasy',名称: 'resteasy-multipart-provider',版本:'3.0.19.Final' 编译组:'org.jboss.resteasy',名称: 'resteasy-multipart-provider',版本:'3.0.10.Final'

两者都有 InputPart 接口,其中有

getBody(GenericType 类型)

但是 GenericType 的包在 3.0.10 和 3.0.19 是不同的。 这破坏了我的应用程序。

因此,如果您需要不间断的应用程序,最好保持静态版本。

【讨论】:

    猜你喜欢
    • 2015-01-25
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 2023-04-06
    • 2022-11-07
    • 2021-01-13
    相关资源
    最近更新 更多