在构建单一 Jar 包时,Maven maven-assembly-plugin 和 maven-shade-plugin 插件的不同之处maven-shade-plugin

相同点:

Maven Assembly Plugin 和 Shade Plugin 都可以用来在构建单一 Jar 包时,将所有 Dependency 打入这个最终生成的 Jar 中去。

不同点:

Assembly 插件不仅会将 Dependency 中的 Class 文件打入最终的 Jar 包,还会将 Dependency 中的资源文件,诸如 properties 文件打入最终的 Jar 包。当项目和其 Dependency 中有同名的资源文件时,就会发生冲突,项目中的同名文件便不会加入到最终的 Jar 包中。
如果这个文件是一个关键的配置文件,便会导致问题。而 Shade Plugin 不存在这样的问题。

结论:

通过在项目中实践,构建单一jar包,优先用Shade Plugin

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <createDependencyReducedPom>true</createDependencyReducedPom>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <!-- 主类的全限定名 -->
                                    <mainClass></mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容