Maven: Jar в ссылочных библиотеках, несмотря на то, что не отображается в эффективном POM - PullRequest
1 голос
/ 17 января 2012

Прежде чем импортировать мой проект Maven, я собираю его, используя следующую команду: mvn clean install

Затем я создаю необходимые файлы Eclipse следующим образом: mvn -Dwtpversion = 2.0 eclipse: eclipse

Я заметил, что мои Библиотеки ссылок в Eclipse содержат этот jar: validation-api-1.0.0.GA.jar

Однако, когда я смотрю эффективную POM в Eclipse, такая банка не появляется. Поэтому мне интересно, как эта банка добавляется в мой путь к классу Eclipse?

Мне нужна эта банка для аннотации @Valid, которую я использую, и мне нужно, чтобы Maven знал об этом. Если я создаю свои файлы classpath с использованием Maven, то почему Maven не знает об этом?

Спасибо

Ответы [ 4 ]

1 голос
/ 17 января 2012

Maven также добавляет к вашему пути классов подчиненные зависимости ваших основных зависимостей (которые специально объявлены вами в pom.xml). Сделать

mvn dependency:tree -Dverbose

Чтобы увидеть, какие другие зависимости используются с определенной зависимостью, объявленной pom.

Кроме того, если вы хотите видеть только зависимости определенной зависимости, называемой x.y.z, вы можете сделать:

mvn dependency:tree -Dverbose -Dincludes=x.y.z

(где x.y - идентификатор группы, а z - идентификатор артефакта)

1 голос
/ 17 января 2012

Проверьте вкладку иерархии зависимостей в pom (в Eclipse), возможно, jar является зависимостью от другого используемого вами jar.

В этом случае ссылка была в Java Build Path проекта и была добавлена ​​, вероятно, при создании проекта из-за параметра -Dwtpversion = 2.0 .

0 голосов
/ 06 февраля 2014

Я столкнулся с той же проблемой.И после некоторого исследования я понял, что транзитивные зависимости вашего родительского pom могут не отображаться в Effective POM, но будут присутствовать в справочных библиотеках.

Вся путаница возникла, потому что, когда я выполнил следующую команду

mvn dependency:tree -Dincludes=X (где X - идентификатор группы банки, которую я искал)

Это такнет упоминания родительского pom, вместо этого он ссылался на зависимость в родительском pom, которая приводит X к таблице.(Что имеет смысл, потому что мы наследуем от родительского пом).

0 голосов
/ 17 января 2012

Одна из ваших зависимостей проекта, вероятно, имеет зависимость для этого файла JAR.Проверьте графическую диаграмму зависимостей или просто найдите ее, выясните зависимость вашего проекта, которая зависит от этого, и исключите эту зависимость, если возможно, с помощью тегов maven 'exclude'.

Вы можете использовать исключения зависимостей maven,как показано ниже:

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>sample.ProjectA</groupId>
      <artifactId>Project-A</artifactId>
      <version>1.0</version>
      <scope>compile</scope>
      <exclusions>
        <exclusion>  <!-- declare the exclusion here -->
          <groupId>sample.ProjectB</groupId>
          <artifactId>Project-B</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>
  </dependencies>
</project>

Источник: Maven - исключения зависимостей

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