通过创建一个完全独立的可执行jar文件来结束示例,这个jar可以在生产环境中运行。可执行jar(有时称为“胖jar”)包含已编译的类和代码运行需要的所有jar依赖项的归档文件。

    可执行jar和Java Java没有提供加载嵌套jar文件(jar中本身包含的jar文件)的标准方法。如果您要分发独立的应用程序,则可能会出现问题。 为了解决这个问题,许多开发人员使用“超级(uber)”jar。超级jar将来自应用程序所有依赖项的所有类打包到单个存档文件中。这种方法的问题在于,很难查看应用程序中包含哪些库。如果在多个jar中使用相同的文件名(但具有不同的内容),也可能会产生问题。 Spring Boot采用了另一种方法,实际上允许您直接嵌套jar。

    要创建可执行jar,我们需要将添加spring-boot-maven-pluginpom.xml。为此,请在dependencies部分下方插入以下行:

    1. <build>
    2. <plugins>
    3. <plugin>
    4. <groupId>org.springframework.boot</groupId>
    5. <artifactId>spring-boot-maven-plugin</artifactId>
    6. </plugin>
    7. </plugins>
    8. </build>

    info.svg spring-boot-starter-parentPOM包括<executions>配置以结合repackage目标。如果不使用父POM,则需要自己声明此配置。有关详细信息,请参见插件文档

    保存pom.xml,然后从命令行运行mvn package,如下所示:

    1. $ mvn package
    2. [INFO] Scanning for projects...
    3. [INFO]
    4. [INFO] ------------------------------------------------------------------------
    5. [INFO] Building myproject 0.0.1-SNAPSHOT
    6. [INFO] ------------------------------------------------------------------------
    7. [INFO] .... ..
    8. [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
    9. [INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
    10. [INFO]
    11. [INFO] --- spring-boot-maven-plugin:2.4.0-SNAPSHOT:repackage (default) @ myproject ---
    12. [INFO] ------------------------------------------------------------------------
    13. [INFO] BUILD SUCCESS
    14. [INFO] ------------------------------------------------------------------------

    如果查看target目录,则应该看到myproject-0.0.1-SNAPSHOT.jar文件。该文件的大小应为10 MB左右。如果您想窥视内部的内容,可以使用jar tvf命令,如下所示:

    1. $ jar tvf target/myproject-0.0.1-SNAPSHOT.jar

    您还应该在target目录中看到一个更小的名叫myproject-0.0.1-SNAPSHOT.jar.original文件。这是Maven在Spring Boot重新打包之前创建的原始jar文件。
    要运行该应用程序,请使用以下java -jar命令:

    1. $ java -jar target/myproject-0.0.1-SNAPSHOT.jar
    2. . ____ _ __ _ _
    3. /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
    4. ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
    5. \\/ ___)| |_)| | | | | || (_| | ) ) ) )
    6. ' |____| .__|_| |_|_| |_\__, | / / / /
    7. =========|_|==============|___/=/_/_/_/
    8. :: Spring Boot :: (v2.4.0-SNAPSHOT)
    9. ....... . . .
    10. ....... . . . (log output here)
    11. ....... . . .
    12. ........ Started Example in 2.536 seconds (JVM running for 2.864)

    和以前一样,要退出该应用程序,请按ctrl-c