从maven安装警告生成可运行的jar

时间:2011-11-23 21:19:00

标签: maven-plugin

我们正在建立一个基于maven的项目。现在我尝试使用shade插件生成一个可运行的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 build时,会发出许多警告: [警告]我们在C:\ Users \ maven.repo \ company \ org \ slf4j \ slf4j-nop \ 1.6.2 \ slf4j-nop-1.6.2中有一个重复的org / slf4j / impl / StaticMDCBinder.class的.jar

似乎每个依赖都会重复。 有人可以给我一些关于此的建议吗? 非常感谢,感恩节快乐。

1 个答案:

答案 0 :(得分: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将带有依赖关系的jar附加为可配置分类器下的附加工件,而不是替换原始工件(如配置中):

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