Как решить проблему зависимости в Maven из-за использования разных версий одного и того же проекта - PullRequest
0 голосов
/ 24 марта 2019

У меня есть 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 голосов
/ 24 марта 2019

Если у вас активно правило принудительного применения зависимостей (которое у вас, очевидно, есть), вам нужно определить свои версии в <dependencyManagement> (что отличается от стандартного <dependencies>).

Затем вы можете объявить зависимости без версии в <dependencies>.Записи dependencyManagement могут быть как в основном модуле, так и в модулях.@ Бахмут дал вам ссылку, чтобы понять, что такое управление зависимостями.

0 голосов
/ 24 марта 2019

Возможно, вы захотите переместить свою зависимость 6.2 в основной помпе на <dependencyManagement>, чтобы она не импортировалась по умолчанию. Затем вы можете просто импортировать версию 6.2 в модуль poms следующим образом:

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

и в модуле, где вам нужна версия 2, вы можете импортировать его следующим образом:

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

Более подробную информацию об управлении зависимостями можно найти здесь: https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...