[转] maven打包可运行的fat-jar的简单方法

Posted 天空之城

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[转] maven打包可运行的fat-jar的简单方法相关的知识,希望对你有一定的参考价值。

[From] https://blog.csdn.net/tearsky253/article/details/75948721

 

问题

在使用“mvn package”命令编译application之后,生成的.jar文件不能直接被“java -jar”命令运行,一般都是因为: 
1. Manifest中没有主清单属性。 
2. 依赖项在.jar文件中不存在。

这两个问题可以通过在pom.xml中增加build plugin来解决。

方法1

使用maven-assembly-plugin来打包fat-jar。

假设我们的application的Main Class是practice.spring.sprice.App,那么我们需要在pom.xml中增加如下一段:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>practice.spring.sprice.App</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>
    </plugins>
</build>

这种方法打包出来的.jar中: 
1. practice.spring.sprice.App会被作为主类。 
2. 包含所依赖的所有jar的内容(这些jar包会被解开)。

 

方法2

使用spring-boot-maven-plugin来打包fat-jar。 
在pom.xml中增加如下一段:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>1.5.6.RELEASE</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

这种方法打包出来的.jar中: 
1. org.springframework.boot.loader.JarLauncher会被作为主类,它会自动调用应用程序中的main方法。 
2. 包含所依赖的所有的jar包(这些jar包不会被解开)

 








以上是关于[转] maven打包可运行的fat-jar的简单方法的主要内容,如果未能解决你的问题,请参考以下文章

修改fat-jar名称

SpringBoot简单打包部署(附工程)

maven的两种可运行jar打包方式。1内置依赖,2外部依赖。

Maven 打包可运行 jar

maven 打包可运行jar包

maven 可运行 jar 包的打包,包含依赖 jar 包