【maven系列】maven可执行jar打包

眉间皱痕 提交于 2019-12-05 00:59:47

最近因项目需要,需要将项目打成jar包运行,项目为普通jar包,在pom配置如下:

第一种:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.5.5</version>
    <configuration>
        <archive>
            <manifest>
                 <!-- 指定main方法所在类 -->
                 <mainClass>com.xxx.Main</mainClass>
            </manifest>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

打包完成后,会将所有依赖的jar包打成一个jar文件,命令行使用

java -jar xxx.jar

运行。不过,在运行时发现一个问题:使用了maven多模块开发,相同名称的配置在多个模块中都存在,打包后,配置文件并不是所期望的,因此放弃了该方法。

第二种:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.4.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <!-- 指定main方法所在类 -->
                        <mainClass>com.xxx.Main</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

同样,打包完成后,会将所有依赖的jar包打成一个jar文件,命令行使用

java -jar xxx.jar

运行。该方法打包后,配置文件为所期望的配置文件,因此使用了此打包方法。 特此记录。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!