Spring Boot官方文档 - 创建可执行jar包

继第一个Spring Boot应用之后,我们通过创建可以在生产环境运行的可执行jar文件,来完成上一篇的实例。可执行jars(有时也叫fat jars)把依赖的jar包、编译后的classes全部打在一起。

可执行Jars和Java

Java没有提供任何标准的方式加载嵌套的jar文件。如果你要发布自包装的应用,可能是会有问题的。

为了解决这个问题,很多开发者使用"uber" jars。uber jar简单的从所有jars,将所有classes打包到单独的压缩包里。这个方案的问题是很难查看应用中实际用了哪些类库。如果多个jar里刚好使用了相同的类名就会有问题。

Spring Boot使用了不同的方案,让你能真正的直接嵌套jars。

要创建可执行jar,我们需要在pom.xml添加spring-boot-maven-plugin,添加在dependecies部分下面:

 
  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>

保存pom.xml并运行mvn package命令:

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

你应该能在target目录里看到myproject-0.0.1-SNAPSHOT.jar。这个文件应该在10MB左右。如果你想看看里面都有什么,你可以使用jar tvf:

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

target目录里还有个非常小的myproject-0.0.1-SNAPSHOT.jar.original文件。这个是Spring Boot打包之前Maven创建的原始jar文件。

使用java -jar命令,运行应用:

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

跟之前一样,要退出应用,按ctrl-c就可以了。

猜你喜欢

转载自blog.csdn.net/cqg1988/article/details/81294921