сборка maven тянет неправильную зависимость
Я получаю неожиданную версию зависимости (1.5.8), когда я использую плагин сборки, но больше нигде. В моем помпоне у меня:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.0</version>
</dependency>
когда я запускаю dependency:tree
или dependency:list
, Я вижу правильную версию и только правильную версию. Когда я проверяю Eclipse, я вижу только правильную версию.
в моей сборке.xml у меня есть:
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
в результате zip я получаю slf4j-log4j12-1.5.8.сосуд. Понятия не имею, откуда это взялось. Любой помочь?
использование maven 3.0.4.
2 ответов
Это было связано с "плохой" версией плагина сборки (2.2-beta-5). Мой помпон.xml не указал версию плагина. Когда я явно отметил его как 2.4 (или последнюю версию, когда вы читаете это!), плагин вытащил правильную зависимость.
урок - Если вы получите следующее предупреждение в сборку:
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-whatever-plugin is missing
It is highly recommended to fix these problems because they threaten the stability of your build.
.. исправь это!
-
вы можете попытаться удалить плохую банку (slf4j-log4j12-1.5.8.jar) из вашего репозитория maven и добавьте туда правильный (slf4j-log4j12-1.6.0.сосуд.) Затем запустите сборку с помощью
--offline
переключатель. В тот момент, когда maven пытается получить неправильную банку, сборка потерпит неудачу, и maven покажет вам, из какой транзитивной зависимости он пытается ее получить. Затем вы исключаете его из транзистивных зависимостей следующим образом:<exclusions> <exclusion> <artifactId>slf4j-api</artifactId> <groupId>slf4j-log4j12</groupId> </exclusion> </exclusions>
-
проверьте, если это Банку, что вы получили правильные группы. Некоторые люди создают дубликаты общих банок для
глупый и злойспециальные цели, которые могут запутать maven. В специальном, проверьте, если вы не получаете . Вы можете запретить нежелательные зависимости с помощью Maven-enforcer-plugin, например:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>1.0</version> <executions> <execution> <id>enforce-banned-dependencies</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <bannedDependencies> <excludes> <exclude>org.slf4j:slf4j-log4j12:1.5.8</exclude> <!-- Wrong version, dude! --> <exclude>commons-logging:*</exclude> <!-- Worst, stupidest, lamest logging framework ever! --> <exclude>org.jboss.resteasy:slf4j-simple</exclude> <!-- Evil JAR duplication. --> <exclude>org.jboss.resteasy:slf4j-api</exclude> <!-- Evil JAR duplication. --> <exclude>org.jboss.resteasy:slf4j-log4j12</exclude> <!-- Evil JAR duplication. --> <exclude>org.jboss.resteasy:jackson-core-asl</exclude> <!-- Evil JAR duplication. --> <exclude>org.jboss.resteasy:jackson-mapper-asl</exclude> <!-- Evil JAR duplication. --> <exclude>org.jboss.resteasy:jackson-core-lgpl</exclude> <!-- Evil JAR duplication. --> <exclude>org.jboss.resteasy:jackson-mapper-lgpl</exclude> <!-- Evil JAR duplication. --> <exclude>org.codehaus.jackson:jackson-core-lgpl</exclude> <!-- Two distinct packages for the exact same thing always creates conflicts. We want the ASL one. --> <exclude>org.codehaus.jackson:jackson-mapper-lgpl</exclude> <!-- Two distinct packages for the exact same thing always creates conflicts. We want the ASL one. --> <exclude>velocity-tools:velocity-tools</exclude> <!-- Was renamed. --> <exclude>velocity:velocity</exclude> <!-- Was renamed. --> <exclude>struts:struts</exclude> <!-- Was renamed. --> <exclude>javassist:javassist</exclude> <!-- Was renamed. --> <exclude>axis:*</exclude> <!-- Was renamed to org.apache.axis:* and wsdl4j:wsdl4j . --> <exclude>commons-beanutils:commons-beanutils-core</exclude> <!-- Redundant package. --> <exclude>xpp3:xpp3_min</exclude> <!-- Redundant package. --> <exclude>xml-apis:xml-apis:2.0.0</exclude> <!-- Bad package, for some strange reason 2.0.x is inferior to 1.4.x. --> <exclude>xml-apis:xml-apis:2.0.2</exclude> <!-- Bad package, for some strange reason 2.0.x is inferior to 1.4.x. --> <exclude>quartz:quartz</exclude> <!-- Was renamed. --> </excludes> </bannedDependencies> </rules> </configuration> </execution> </executions> </plugin>