Что определяет поведение зависимости Maven при загрузке ресурсов? - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть проект Eclipse Maven, который зависит от других проектов в моей рабочей области.Я определил их все как импорт из моего локального репозитория, и все операторы зависимостей в pom.xml выглядят непротиворечивыми, например:

<dependency>
  <groupId>com.mycompany.mygroup</groupId>
  <artifactId>Project1</artifactId>
  <version>1.0.2</version>
</dependency>

<dependency>
  <groupId>com.mycompany.mygroup</groupId>
  <artifactId>Project2</artifactId>
  <version>2.0.1</version>
</dependency>

Однако некоторые проекты отображаются в моем пути сборки как двоичныеJAR-файлы, с этим значком: binary icon, и другие появляются с, как мне кажется, значком «проекта рабочего пространства»: project icon.

Это становитсяпроблема при попытке загрузить ресурсы, содержащиеся в файле JAR: проекты с иконкой «двоичный файл» успешно загружают ресурсы из JAR;проекты со значком «проект рабочей области» вместо этого пытаются перейти в файловую систему для ресурса.

Что это за проекты, определяющие, как они отображаются в списке зависимостей Maven?Я проверил тег "natures" в файле .project, и они идентичны.

1 Ответ

0 голосов
/ 26 февраля 2019

Это поведение контролируется параметром Maven --> Disable/Enable Workspace Resolution, который имеет следующее поведение ( source )

Это приводит к изменению способа обнаружения артефактов зависимости в Maven.Если проект настроен на разрешение зависимостей из рабочей области, эти артефакты не обязательно должны присутствовать в вашем локальном хранилище.Предположим, что project-a и project-b находятся в одной рабочей области Eclipse, и что project-a зависит от project-b.Если разрешение рабочей области отключено, сборка m2eclipse Maven для проекта-a будет успешной, только если артефакт проекта-b присутствует в локальном хранилище.Если разрешение рабочего пространства включено, m2eclipse разрешит зависимость через рабочее пространство Eclipse.Другими словами, когда разрешение рабочей области включено, проекты не должны быть установлены в локальном репозитории для связи друг с другом.

Это означает, что если Workspace Resolution отключено, все зависимости должны бытьчтение из репозитория maven и будет отображаться как enter image description here.

Другой другой стороны, если Workspace Resolution включен, и ваше рабочее пространство содержит проект open которые все информации об артефактах (groupId, artifactId, version) совпадают с определенными в <dependency>, что зависимости будут напрямую ссылаться на исходные коды этого открытого проекта,Значок будет отображаться как enter image description here

Я не думаю, что это может быть единственным фактором, потому что некоторые из зависимостей со значком «бинарная банка» такжеоткройте в моей рабочей области.

Я думаю, что, скорее всего, это потому, что <version>, который вы используете в pom.xml, отличается от объявленного <version> этого проекта в рабочей области.

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