今天使用spring boot 2.1.1.RELEASE版本搭建项目,虽然可以直接打包成可运行的jar包,但是由于公司准备采用docker容器来管理项目,所以需要把jar包变成war包,并且war包内也不需要内嵌tomcat。

经历:按照网上说的在pom中添加代码(更改package类型是必须的<packaging>war</packaging>):

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>

发现打包出来的war包体积仍然很大,而且target下面会出现一个war包和一个.war.original结尾的文件,war文件中仍然包含tomcat的jar包。

最后观察mvn打包输出的内容如下:

......省略......
[INFO] --- maven-war-plugin:3.2.2:war (default-war) @ sandbox-service ---
[INFO] Packaging webapp
[INFO] Assembling webapp [sandbox-service] in [/...省略项目绝对路径.../target/sandbox-service-0.0.1-SNAPSHOT]
[INFO] Processing war project
[INFO] Webapp assembled in [139 msecs]
[INFO] Building war: /...省略项目绝对路径.../target/sandbox-service-0.0.1-SNAPSHOT.war
[INFO]
[INFO] --- spring-boot-maven-plugin:2.1.1.RELEASE:repackage (repackage) @ sandbox-service ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.515 s
......省略......

原来maven已经打包好了,然后spring-boot-maven-plugin又重新做了打包的动作,应该是打包成了可以通过-jar运行的包,并且把原来maven打包好的war包重新命名成了.war.original

当我把pom文件中的代码注释之后就正常了

<!--  注释spring-boot-maven-plugin原因:因为这个插件会重新打包(repackage),打包成spring-boot可通过-jar形式运行的jar或war包,并且把原来maven打包重名称成.war.original结尾 -->
<!--
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
-->

如果想在打包的时候定义war名称,还可以添加下面的插件:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>war包的名称</warName>
</configuration>
</plugin>

spring boot打包会有.war.original文件的原因 (笔记)的更多相关文章

  1. spring boot 打包jar后访问classes文件夹的文件提示地址不存在

    报错内容:class path resource [client.p12] cannot be resolved to absolute file path because it does not r ...

  2. spring/boot 打包,资源/配置/业务文件分离

    spring/boot打包,将业务jar包和资源配置文件进行分离打包,打包后的资源在target/release文件夹下面 注意:添加以下配置后,注意修改自己的入口类 <!--相关编译打包依赖- ...

  3. spring boot 打包war后 部署到外部 tomcat 的具体正确操作【包括修改端口 与 去除请求路径的工程名】

    1.前言 工程做好了,总不能放在idea运行吧?不然怎么把项目放到云服务器呢?[这一篇随笔不讲解发布的云服务器的操作,在其他随笔有详细记载.] 解决的方案是把springboot 工程 打包成war文 ...

  4. Spring Boot打包war jar 部署tomcat

    概述 1.Spring Boot聚合工程打包war部署Tomcat 2.Spring Boot打包Jar,通过Java -jar直接运行. 3.提供完整pom.xml测试项目 至github 4.项目 ...

  5. spring boot (2):spring boot 打包tomcat、tomcat 部署多个项目、服务器部署项目SSL 设置(阿里云)

    一.spring boot 内置tomcat配置https: 关于自签名证书可以看下上一篇 spring boot1 更详细的可以看转载 https://www.jianshu.com/p/8d4ab ...

  6. Spring Boot打包总结

    环境配置信息 -** JDK 1.8 -** Spring Boot 1.5.3.RELEASE -** IDE: STS 3.4 Spring Boot下打包过程 基于STS创建Spring boo ...

  7. Spring Boot 打包成的可执行 jar ,为什么不能被其他项目依赖?

    前两天被人问到这样一个问题: "松哥,为什么我的 Spring Boot 项目打包成的 jar ,被其他项目依赖之后,总是报找不到类的错误?" 大伙有这样的疑问,就是因为还没搞清楚 ...

  8. 一些坑 Java 执行命令行命令 Spring Boot 打包为jar ResourceUtils.getFile 等出现的问题

    Java 执行命令行命令 这个没技术含量的东西耗费了我半个多小时 String command = ....; Process process = Runtime.getRuntime().exec( ...

  9. spring boot打包以及centos下部署

    spring boot打包以及部署 一.打包 springboot的打包方式有很多种.有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的.这里主要介绍如何打成j ...

随机推荐

  1. elem.attr()无法正确判断checkbox是否选中

    本篇文章由:http://xinpure.com/elem-attr-does-not-correctly-determine-whether-the-checkbox-is-selected/ 关于 ...

  2. Bootstrap学习 进度条

    本文将介绍Bootstrap进度条,在本文中你将看到如何使用Bootstrap创建加载,重定向或动作状态的进度条 bootstrap进度条使用CSS3过渡和动画来获得该效果.Internet Expl ...

  3. 关于Xcode正确运行swift多线程

    想跳过废话直接看解决方案的可以点击这里直接跳转,我这人写博客喜欢瞎逼逼. 还有一些我看过的不错的多线程资料,在此给出链接,点击这里直接跳转查看. 近来为了做操作系统课程设计,不得不去学习了下多线程. ...

  4. C#指南,重温基础,展望远方!(6)C#类和对象

    类是最基本的 C# 类型. 类是一种数据结构,可在一个单元中就将状态(字段)和操作(方法和其他函数成员)结合起来. 类为动态创建的类实例(亦称为“对象”)提供了定义. 类支持继承和多形性,即派生类可以 ...

  5. 理解x64代码模型

    原作者:Eli Bendersky http://eli.thegreenplace.net/2012/01/03/understanding-the-x64-code-models 在编写x64架构 ...

  6. Javascript实现真实字符串剩余字数提示

    //文本框剩余字数提示(字符大小) function textLimitCheckSj(thisArea, maxLength, SpanId) { var str = thisArea.value; ...

  7. thread_线程创建

    创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果.如果需要获取执行结果,就必须通过共享变量或者使用线 ...

  8. (WPF)依赖属性

    属性触发器: <Button MinWidth=" 75" Margin="10"> <Button.Style> <Style ...

  9. iOS swift 关于自定义表情键盘

    目录 输入框 键盘监听 键盘切换 表情装载 表情加载 表情输入 表情输出 表情显示 结束语 demo下载 demo图片: 输入框 为了让输入框能够随着用户输入内容变化自动变化高度,这里的输入框使用UI ...

  10. Service Mesh服务网格新生代--Istio(转)

    万字解读:Service Mesh服务网格新生代--Istio  官网地址:https://preliminary.istio.io/zh/docs/concepts/security/ Servic ...