由于使用同一项目的不同版本,如何解决Maven中的依赖关系问题

时间:2019-03-24 14:22:50

标签: java maven

我的项目中有4个模块。 Module1(即com.assign.print:printlog.value:3.0.0-SNAPSHOT)具有一个类,即Foo.java,在该类中,还有更多类正在使用com.print.assess:mns.pro:2.0

Module2,Module2和Module4使用的是com.print.assess:mns.pro:6.2。

在我的项目主pom.xml中,依赖项添加为:

<dependency>
   <groupId>com.print.assess</groupId>
   <artifactId>mns.pro</artifaxtId>
   <version>6.2</version>
 </dependency>

在Foo.java中,我有一个使用旧版本的DataVal.java类。 如果我不添加

<dependency>
   <groupId>com.print.assess</groupId>
   <artifactId>mns.pro</artifaxtId>
   <version>2.0</version>
 </dependency>

对于Module1 pom.xml,DataVal.java出现Redline错误,提示“无法解析符号”。因此,当我在2.0版中添加依赖项时,该错误已解决,但在安装项目时:

Failed while enforcing releasability the error(s) are [
Dependency convergence error for com.print.assess:mns.pro:6.2 paths to 
dependency are:


+-com.assign.print:printlog.value:3.0.0-SNAPSHOT
  +-com.app.print:print.sal:1.1.3
   +-com.print.assess:mns.pro:6.2
and
+-com.assign.print:printlog.value:3.0.0-SNAPSHOT
  +-com.print.assess:mns.pro:2.0
and
+-com.assign.print:printlog.value:3.0.0-SNAPSHOT
  +-com.print.assess.over:multi-task.rev:3.1
    +-com.print.assess:mns.pro:6.2

如何解决此问题?

预先感谢

2 个答案:

答案 0 :(得分:0)

您可能希望将主pom中的6.2依赖项移至from dask import array as da from dask.distributed import Client # limit memory to 4 GB client = Client(memory_limit=4e9) # Create 80 GB random array with chunks=(M, 1) arr = da.random.uniform(-1, 1, size=(1e5, 1e5), chunks=(1e5, 1)) # Compute mean (This works!) arr.mean().compute() # Rechunk to chunks=(1, N) arr = arr.rechunk((1, 1e5)) # Compute mean (This hits memory limit!) arr.mean().compute() ,因此默认情况下不会将其导入。然后,您可以像这样在模块poms中简单地导入6.2版本:

<dependencyManagement>

,在需要版本2的模块中,您可以这样导入它:

<dependency>
   <groupId>com.print.assess</groupId>
   <artifactId>mns.pro</artifaxtId>
 </dependency>

有关依赖项管理的更多信息,可以在这里找到: https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

答案 1 :(得分:0)

如果您具有有效的dependencyConvergence强制实施器规则(您显然已经拥有),则需要在<dependencyManagement>中确定您的版本(与标准<dependencies>不同)。

然后,您可以在<dependencies>中声明没有版本的依赖项。 dependencyManagement条目可以位于主pom中,也可以位于模块中。 @Bahmut给了您链接以了解dependencyManagement。