Maven 学习笔记(三)

  有时我们在项目中可能需要打包一个可执行的 jar 包,我最近也遇见了,很傻很天真的用了如下配置:  

<packaging>jar</packaging>

效果一如既往的好,打包成功了,一执行,傻眼了,jvm 很不客气的抛出了一个异常:XXX 中没有主清单异常。网上查资料,方案一大堆:

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>                            
                <mainClass>【入口路径】</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

指定 mainclass 即可,又屁颠屁颠的去打包执行,居然又出错了,找不到依赖项。一般来说,这样是就可以了,但是我的场景相对于来说复杂一些,当前的项目中还依赖了一些其他依赖包,需要在打包时把这些依赖文件也打包进来,maven 在 jar 打包时,一般不会把依赖项打包进来,解决方案如下:

这种 jar 的打包,还可以使用 maven-shade-plugin 来解决,但是这个插件我下不下来,代码贴出来:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>XXX.XXX.Mainclass</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

搞定,做个记录,供后续查阅。

原文地址:https://www.cnblogs.com/krockey/p/4452748.html