美文网首页
在构建单一 Jar 包时,Maven maven-assembl

在构建单一 Jar 包时,Maven maven-assembl

作者: caoxinyiyi | 来源:发表于2019-12-16 09:31 被阅读0次

    相同点:

    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>
    

    相关文章

      网友评论

          本文标题:在构建单一 Jar 包时,Maven maven-assembl

          本文链接:https://www.haomeiwen.com/subject/wcernctx.html