目前我有大约 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/