我有一个项目,其中两个依赖项使用同一库的不同版本。例如,我的项目具有dependency A
和dependency
B
。A
和B
都使用通用的库/依赖项X
,但版本不同。A
拥有v1
的版本X
和B
具有v2
的版本X
。所以,现在当我添加A
和B
在我的项目依赖,有2个版本,X
在我的项目的go.sum
。
我期望在运行时由A
和引用各个版本B
。但事实并非如此。不知怎的,当我在我的项目运行测试时,A
使用v2
的X
,最好应使用v1
(因为在go.mod
中A
,明确指定/加v1
)。所以,它打破了执行,因为有很多在差异v1
及v2
的X
。
所以,在我的项目,我怎么能明确指定要使用v1
的X
通过A
和使用v2
的B
?go模块中是否有此类规定?
您的B
软件包必须X
带有/v2
后缀。
转到Wiki:模块:语义导入版本控制:
当v1或更高版本的软件包进行向后不兼容的更改时,召回semver需要对主要版本进行更改。遵循导入兼容性规则和semver的结果称为
语义导入版本控制 ( Semantic Import Versioning)
,其中主要版本包含在导入路径中–这可确保在主要版本由于兼容性中断而增加时,导入路径会随时更改。语义导入版本控制的结果是,加入Go模块的代码 必须遵守以下规则:
- 如果模块的版本为v2或更高版本,则必须
/vN
在go.mod文件(例如module github.com/my/mod/v2
,require github.com/my/mod/v2 v2.0.0
)中使用的模块路径的末尾,以及包导入路径(例如,import "github.com/my/mod/v2/mypkg"
)中包含的模块主版本作为。
导入路径中的此版本后缀将使它们成为2个“不同”的软件包。如果A
和B
将使用的相同主版本X
,则将不会有2个主版本,则将选择较高版本(“最小版本选择”算法)。有关详细信息,请参见版本选择。
问题内容: 我正在为Java中的ERP系统进行定制。在我的定制中,我想使用Apache POI 3.10.1。因此,我集成了jars poi-3.10.1-20140818.jar和poi-ooxml-3.10.1-20140818.jar。 但是,这些jar包含几个类,这些类已经包含在ERP系统的核心代码中,但是有所不同。 如果核心ERP类覆盖POI类,则定制将引发运行时异常。如果POI类覆盖核
问题内容: 我刚刚遇到了一个案例,即我的Maven项目有两个直接依赖项,其中有两个不同版本的特定传递性依赖项。 在我的特殊情况下,我直接依赖以下内容: 和 这两个依赖项都对com.sun.jersey:jersey- core具有(较深)的传递性依赖关系,但是每个都有不同的版本。Maven并没有失败,甚至没有警告(或者,如果没有,我从来没有看到过!)正在发生这样的事情……因此,直到调试了球衣版本时
问题内容: 我使用以下两个依赖项: 两者必须为同一版本才能正常工作。由于我的其他依赖项使用更高的版本,因此Gradle为每个依赖项使用不同的版本。 我通过运行发现了这一点: 如何强制Gradle为这两个依赖项设置相同的版本? 问题答案: 您的依赖项之一是强制更新番石榴版本。使用以定位库驱逐你的版本。 您遇到的问题是,如果您强迫它使用14.0.1,则另一个库可能无法正常工作。您是否可以仅使用17.0
我使用以下两个依赖项: 两者必须是相同的版本才能正常工作。由于我的其他依赖项使用更高的版本,Gradle为每个依赖项使用不同的版本。 我通过运行找到了这一点: 如何强制Gradle为这两个依赖项设置相同的版本?
我已经读过这个线程,com.android.support库必须使用完全相同的版本规范和许多其他类似的线程,但没有一个答案解决了我的问题。 错误:-
问题内容: 我有一个独立使用两个依赖项的项目:BoneCP和Hibernate。但是由于SLF4J及其版本冲突,它无法正常工作,因为BoneCP需要SLF4J 1.5,而Hibernate需要SLF4j 1.6。如您所知,在pom.xml中不可能同时具有相同依赖项的两个不同版本。所以,我该怎么办才能解决这种惊人的SLF4J副作用??? 我得到的错误是臭名昭著的: 我需要添加它,但是不允许具有两个不