springboot创建一个可执行的jar
让我们通过创建一个完全自包含的可执行jar文件来结束我们的示例,该jar文件可以在生产环境运行。可执行jars(有时候被成为胖jars "fat jars")是包含你的编译后的类和你的代码运行所需的依赖jar的存档。
可执行jars和Java:
Java没有提供任何标准的加载内嵌jar文件(即jar文件中还包含jar文件)的方法。如果你想发布一个自包含的应用这就是一个问题。为了解决该问题,很多开发者采用"共享的"jars。一个共享的jar简单地将来自所有jars的类打包进一个单独的“超级jar”。采用共享jar方式的问题是很难区分在你的应用程序中可以使用哪些库。在多个jars中如果存在相同的文件名(但内容不一样)也会是一个问题。
Spring Boot采取一个不同的途径,并允许你真正的内嵌jars。
为了创建可执行的jar,需要将 spring-boot-maven-plugin 添加到我们的pom.xml中。在dependencies节点下插入以下内容:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
注: spring-boot-starter-parent POM包含用于绑定repackage目标的 <executions> 配置。如果你不使用parent POM,你将需要自己声明该配置。
保存你的pom.xml,然后从命令行运行 mvn package :
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
$ mvn package[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building myproject 0.0.1-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO] .... ..[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar[INFO][INFO] --- spring-boot-maven-plugin:1.3.0.BUILD-SNAPSHOT:repackage (default) @ myproject ---[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[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 |
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.3.0.BUILD-SNAPSHOT)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)
和以前一样,点击 ctrl-c 来温柔地退出程序。
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">
springboot创建一个可执行的jar的更多相关文章
- maven打一个可执行的jar包
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-depen ...
- Java部署_IntelliJ创建一个可运行的jar包(实践)
一.本文目的:使用Intellij Idea 13生成一个简单可执行的jar,用于快速在linux验证某个功能 二.项目源码 1.结构图 2.StaticC1.java 1 2 3 4 5 6 7 ...
- maven-assembly-plugin把java工程打包成为一个可执行的jar包
用Java写了一个小工具,使用maven java 工程.写完后,想打包成一个可执行的jar包. 使用maven的插件maven-assembly-plugin pom.xml里添加 <buil ...
- springboot创建一个服务,向eureka中注册,使用swagger2进行服务管理
首先pom.xml文件,spring boot.springcloud版本很麻烦,容易出问题 <?xml version="1.0" encoding="UTF-8 ...
- SpringBoot打包成可执行的Jar文件
需要时SpringBoot项目 通过创建可以在生产环境中运行的完全独立的可执行jar文件来结束示例.可执行jar(有时称为"胖jar")是包含您的已编译类以及代码需要运行的所有ja ...
- linux下创建一个可执行脚本
1.touch hello.sh 2.vim hello.sh 键入i 插入#!/bin/sh echo hello world; 键入: esc : ...
- 创建一个 mac 的后台进程(daemon)
Mac中创建守护进程(Daemon) 创建一个可以执行的脚本 hello.sh touch /Users/oslivan/test/hello.sh chmod 755 /Users/oslivan/ ...
- 在IDEA中如何将Spring boot项目打包成可执行的jar包并发布到linux服务
这两年微服务很流行,这里简单介绍一下如何将自己使用idea写的微服务打包成一个可执行的jar包,并发布到linux服务器的步骤.因为spring boot有内置的tomcat所以一般使用内置的tomc ...
- SpringBoot 创建可执行Jar
创建可执行JAR 我们也可以通过插件创建一个在生产环境中运行的可执行jar文件来完成我们的示例. 首先引入依赖: <build> <plugins> <plugin> ...
随机推荐
- Linux上部署Tomcat+Nginx (JavaWeb项目)
https://blog.csdn.net/wohiusdashi/article/details/81147059
- IIS错误提示:另一个程序正在使用此文件 进程无法访问
在IIS管理中,启动一个配置好的网站时,提示:另一个程序正在使用此文件 进程无法访问 原因:网站绑定端口被占用 解决办法:更换绑定端口或者将占用此端口的程序关掉即可
- Java == ,equals 和 hashcode 的区别和联系(阿里面试)
今天阿里的人问我 equals 与hashcode的区别,我答不上来, 仔细查了一下,做了总结: (1) == 这是Java 比较内存地址,就是内存中的对象: java中的==是比较两个对象在JVM中 ...
- mysql 好用的sql语句
1.删除某个库里面全部的表 ,先在mysql库中执行: SELECT CONCAT('drop table ',table_name,';') FROM information_schema.`TA ...
- 使用ajax异步上传文件或图片(配合php)
//html代码 <form enctype="multipart/form-data" id="upForm"> <input type=& ...
- mybatis 传递参数的两种方式与模糊匹配 很重要
- djang-rest-framework学习-day1
1.老套路:setting 设置复制粘贴!,必要库的安装: 一些库安装失败的解决办法:在 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 上找到下载,然后使用用 ...
- 分布式为什么使用Redis
一 为什么使用 Redis 在项目中使用 Redis,主要考虑两个角度:性能和并发.如果只是为了分布式锁这些其他功能,还有其他中间件 Zookpeer 等代替,并非一定要使用 Redis. 性能: 如 ...
- King's Quest POJ - 1904(强连通分量)
建图:王子u喜欢女孩v,则u到v连一条边.对于给出的初始完美匹配,王子u与女孩v匹配,则v到u连一条边.然后求SCC. 显然对于同一个SCC中王子数目和女孩数目是相等的,并且从某个王子出发能够到达所有 ...
- 【刷题】BZOJ 2134 单选错位
Description Input n很大,为了避免读入耗时太多, 输入文件只有5个整数参数n, A, B, C, a1, 由上交的程序产生数列a. 下面给出pascal/C/C++的读入语句和产生序 ...