Spring Boot 打成的 jar 和普通的 jar 有什么区别 ?


Spring Boot 打成的 jar 和普通的 jar 有什么区别 ?

Spring Boot 打成的 jar

  • Spring Boot的项目终止以jar包的形式进行打包,这种jar包可以通过可以通过命令(java -jar xxx.jar)来运行的,这种jar包不能被其他项目所依赖,即使被依赖了也不能直接使用其中的类。普通的jar包,解压后直接就是包名,包里就是我们的代码,而 Spring Boot 打包成的可执行 jar 解压后,在 \BOOT-INF\classes 目录下才是我们的代码,因此无法被直接引用。如果非要引用,可以在 pom.xml 文件中增加配置,将 Spring Boot 项目打包成两个 jar ,一个可执行,一个可引用。
    下面是不同jar包的目录结构
  • Spring boot 的jar包

  • 普通的jar包

Spring Boot 打可依赖的jar

只需要在pom文件中配置如下信息

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <!--可以把依赖的包都打包到生成的Jar包中 -->
                            <goal>repackage</goal>
                        </goals>
                        <!--可以生成不含依赖包的不可执行Jar包 -->
                        <configuration>
                            <classifier>exec</classifier>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
  • 一次打包生成两个jar包,其中XXX.jar可作为其它工程的依赖,XXX-exec.jar可被执行

  • 我们看一下目录结构 是否是我们所希望的。

可执行的jar

可依赖的jar包

备注

  • 查看jar的结构工具,可参看 http://java-decompiler.github.io/

    结束

  • 相信小伙伴对Spring Boot jar 和普通的jar有一定的了解,希望本文可以帮助到你


作者:小鱼儿_karl,发布于:2019/08/06
原文:https://www.cnblogs.com/karlMa/p/11304524.html