2011-11-23 64 views
0

我們正在構建一個基於maven的項目。現在我正在嘗試使用陰影插件來生成可運行的jar文件。從maven安裝生成運行jar的警告

<build> 
<plugins> 
<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-shade-plugin</artifactId> 
<version>1.5</version> 
<executions> 
<execution> 
<phase>package</phase> 
<goals> 
<goal>shade</goal> 
</goals> 
<configuration> 
<transformers> 
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
<mainClass>com.myCompany.mainClass</mainClass> 
</transformer> 
</transformers> 
</configuration> 
</execution> 
</executions> 
</plugin> 
</plugins> 
</build> 
<pluginRepositories> 
<pluginRepository> 
    <id>apache maven</id> 
    <url>http://repo1.maven.org/maven2/org/apache/maven/plugins</url> 
</pluginRepository> 
</pluginRepositories> 

當我運行Maven構建,它給許多警告,如: [警告]我們有一個重複的組織/ SLF4J/IMPL/StaticMDCBinder.class在C:\用戶\ maven.repo \企業\組織\ slf4j \ slf4j-nop \ 1.6.2 \ slf4j-nop-1.6.2.jar

似乎每個依賴項都會重複。 有人可以給我一些關於這方面的建議嗎? 非常感謝,感恩節快樂。

回答

2

使用maven dependency:tree命令可以打印並檢查所有記錄的依賴,可能他們中的一些包含重複類,像在這種情況下http://maven.40175.n5.nabble.com/Duplicate-class-warnings-when-using-shade-plugin-td121854.html 然後用exclude標籤以從中移除多餘的Exclude all transitive dependencies of a single dependency

此外,我會建議使用maven-assembly-plugin其附加罐子依賴額外的假象下配置的分類,而不是替換原來的(如在您的配置):

  <artifactId>maven-assembly-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>attached</goal> 
        </goals> 
        <phase>package</phase> 
        <configuration> 
         <descriptorRefs> 
          <descriptorRef>jar-with-dependencies</descriptorRef> 
         </descriptorRefs> 
         <archive> 
          <manifest> 
           <mainClass>com.myCompany.mainClass</mainClass> 
          </manifest> 
         </archive> 
        </configuration> 
       </execution> 
      </executions> 
+0

謝謝你的sugges灰。我試圖添加排除,但它仍然無效。 –