2012-12-12 5 views
9

어셈블리 플러그인을 사용할 때 예상치 못한 버전의 종속성 (1.5.8)이 나타납니다. 내 치어 나는이 :maven 어셈블리가 잘못된 종속성을 가져옵니다.

<dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.6.0</version> 
    </dependency> 

내가 dependency:tree 또는 dependency:list, 내가 올바른 버전 만 올바른 버전을 볼 실행합니다. 이클립스를 체크인 할 때 올바른 버전 만 표시됩니다. 내 assembly.xml에서

나는이 : 결과 우편에서

<dependencySets> 
    <dependencySet> 
     <outputDirectory>lib</outputDirectory> 
    </dependencySet> 
</dependencySets> 

, 내가 SLF4J-log4j12-1.5.8.jar를 얻을. 이것이 어디에서 왔는지는 알 수 없습니다. 어떤 도움이 필요합니까?

maven 3.0.4 사용.

답변

10

이는 '나쁜'조립 플러그인 버전 (2.2 베타 5) 때문이었다. 내 pom.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. 

.. 그것을 해결을!

+1

감사합니다. 2.2 베타 5에서 2.4로 바꾸면 다음과 같이 수정되었습니다 .--) –

+0

정확한 문제에 대한 정확한 질문을 한 후이 질문에 대한 답변을 드리겠습니다. 고맙습니다! – Stewart

4
  1. 당신은 당신 받는다는 저장소에서 나쁜 JAR (SLF4J-log4j12-1.5.8.jar)을 삭제하고있다 (SLF4J-log4j12-1.6.0.jar을) 올바른 하나를 추가 할 수 있습니다. 그런 다음 --offline 스위치로 빌드를 실행하십시오. Maven이 잘못된 JAR을 얻으려고 할 때, 빌드가 실패하고 Maven은 그것을 얻으려는 전이 의존성으로부터 당신을 보여줄 것이다. 그런 다음이 함께 transistive 의존성에서 제외 :

    <exclusions> 
        <exclusion> 
        <artifactId>slf4j-api</artifactId> 
        <groupId>slf4j-log4j12</groupId> 
        </exclusion> 
    </exclusions> 
    
  2. 확인 올바른의 groupId를 가지고있어 그 경우 JAR을. 어떤 사람들은 어리 석음과 악의적 인 특별한 목적을 위해 일반적인 JAR의 복사본을 만들어서 혼란스럽게 만들 수 있습니다. 특별하게는 org.jboss.resteasy:slf4j-log4j12이 표시되지 않는지 확인하십시오. 이 같은 받는다는 - 집행자 - 플러그인을 사용하여 원치 않는 종속성을 금지 할 수 있습니다

    <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> 
    
+1

간단히 mvn dependency : tree를 실행하여 전 이적 종속성을 찾아 위에서 설명한대로 jar를 제외하십시오. – om39a

관련 문제