Maven-зависимость генерирует дополнительные JAR-файлы в целевой директории проекта - PullRequest
1 голос
/ 09 ноября 2011

При создании проекта с Maven я получаю 2 баночки в моей целевой директории: aopalliance-aopalliance-1.0.jar org.aopalliance-aopalliance-1.0.jar

Я подозреваю следующую зависимость в моем pom.xmlэто тот, кто несет ответственность

<dependency>
    <groupId>org.aopalliance</groupId>
    <artifactId>aopalliance</artifactId>
    <version>1.0</version>
</dependency>

, но я не понимаю, почему это происходит.У меня есть куча других зависимостей в моем pom.xml, которые определены таким же образом, и рассматриваемый JAR установлен в Nexus точно так же, как другие JAR, но другие зависимости не приводят к JAR в моем целевом каталоге.

Спасибо.

1 Ответ

1 голос
/ 10 ноября 2011

В свете этого ответа предполагается, что вы используете какой-то плагин, такой как плагин Maven Assembly или Maven EAR, чтобы скопировать все зависимости проекта в вашу целевую папку.

Весьма вероятно, чтонекоторая зависимость, такая как Guice, использует артефакт aopalliance:aopalliance (нотация groupId: artifactId), тогда как вы только что добавили зависимость на org.aopalliance:aopalliance.Maven не знает, что он просто добавил одни и те же файлы классов дважды - он проверяет groupId и artifactId, чтобы увидеть, различаются ли (предположительно) два jar-файла.

У вас есть два варианта:

  1. Удалите зависимость в poms или измените groupId на aopalliance.

  2. Отследите, откуда исходит зависимость aopalliance, затем исключите aopallianceАртефакт из транзитивных зависимостей проблемных артефактов.

Вы можете сделать (2), запустив mvn dependency:tree или с помощью плагина M2Eclipse, открыв POM и просмотрев вкладку Иерархия зависимостей.Вот пример выходных данных команды зависимостей: tree:

mygroup:earproj:pom:2.3.1-SNAPSHOT
+- mygroup:wslib:jar:2.3.1-SNAPSHOT:compile
|  +- axis:axis:jar:1.4:compile
|  |  +- org.apache.axis:axis-saaj:jar:1.4:compile
|  |  +- axis:axis-wsdl4j:jar:1.5.1:runtime
|  |  +- commons-logging:commons-logging:jar:1.0.4:runtime
|  |  \- commons-discovery:commons-discovery:jar:0.2:runtime
|  +- org.apache.axis:axis-jaxrpc:jar:1.4-noqname:compile
|  \- commons-httpclient:commons-httpclient:jar:3.0.1:runtime
|     \- commons-codec:commons-codec:jar:1.2:runtime
+- mygroup:commonclass:2.3.1-SNAPSHOT:compile

Взгляните, например, на регистрацию в общем достоянии, мы видим, что от нее зависит библиотека axis: axis.

ОднаждыВы знаете, какая библиотека зависит от aopalliance, , вы можете добавить исключение в POM .Было бы предпочтительнее, если вы сохраните это исключение и объявление зависимости org.aopalliance в том же POM.

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