java - 使用 '+' 符号进行 gradle/maven 依赖项声明是否有意义?

标签 java maven gradle dependencies

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

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

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

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

我认为最好卡住版本并确保存储库中的源代码随时可编译。

最佳答案

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

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

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

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

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

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

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

我对这些 jar 有经验:

compile group: 'org.jboss.resteasy', name: 'resteasy-multipart-provider', version: '3.0.19.Final' compile group: 'org.jboss.resteasy', name: 'resteasy-multipart-provider', version: '3.0.10.Final'

两者都有InputPart接口(interface),其中有

getBody(GenericType type)

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

因此,如果您需要应用程序没有任何中断,最好保留静态版本。

关于java - 使用 '+' 符号进行 gradle/maven 依赖项声明是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45347253/

相关文章:

java - 将 JsonObject 存储到 JsonArray & JsonException 错误消息

java - 如何避免在 Axis 生成的代码中硬编码 url?

java - 在 Weblogic 12c 中部署具有 com.fasterxml 依赖项的 Spring Boot 应用程序

maven - Gradle子项目版本控制

Java - 类变量

java - 如何检测程序中的元音和辅音

google-app-engine - Gradle构建:爆炸的应用程序中的 jar 错误,而Gradle报告正确的运行时类路径依赖关系

windows - Kotlin JS客户端和JVM服务器构建Webpack SyntaxError

java - 如何在 Volley 或 Retrofit 中接收确认?

javascript - 使用 PMD Maven 分析 Javascript