配置SpringBoot方便的切换jar和war

网上关于如何切换,其实说的很明确,本文主要通过profile进行快速切换已实现在不同场合下,用不同的打包方式。

jar到war修改步骤

  • pom文件修改

    1. packaging配置由jar改为war
    2. 排除tomcat等容器的依赖
    3. 配置web.xml或者无web.xml打包处理
  • 入口类修改

    1. 添加ServletInitializer

特别注意:当改成war包的时候,application.properties配置的server.portserver.servlet.context-path就无效了,遵从war容器的安排。

配置pom

配置packaging

```<packaging>${pom.package}</packaging>
```

修改build


&lt;!-- 作用是打war包的时候,不带版本号 --&gt;
&lt;finalName&gt;${pom.packageName}&lt;/finalName&gt; &lt;!--加入plugin--&gt;
&lt;plugin&gt;
&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
&lt;artifactId&gt;maven-war-plugin&lt;/artifactId&gt;
&lt;version&gt;3.2.2&lt;/version&gt;
&lt;configuration&gt;
&lt;!--如果想在没有web.xml文件的情况下构建WAR,请设置为false。--&gt;
&lt;failOnMissingWebXml&gt;false&lt;/failOnMissingWebXml&gt;
&lt;/configuration&gt;
&lt;/plugin&gt;

排除容器

```<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
```

配置profile

```<profiles>
<profile>
<!-- 开发环境 -->
<id>jar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<pom.package>jar</pom.package>
<pom.packageName>${project.artifactId}-${project.version}</pom.packageName>
<pom.profiles.active>dev</pom.profiles.active>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
</dependencies>
</profile>
<profile>
<id>war</id>
<properties>
<pom.package>war</pom.package>
<pom.packageName>${project.artifactId}</pom.packageName>
<pom.profiles.active>linux</pom.profiles.active>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
</profile>
</profiles>
```

修改入口类

  1. 入口类继承SpringBootServletInitializer
  2. 重写configure方法

使用@Profile注解,当启用war配置的时候,初始化Servlet。


public class Application extends SpringBootServletInitializer { public static void main(String[] args) {
SpringApplication.run(Application.class, args);
} @Profile(value = {"war"})
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}

来源:https://segmentfault.com/a/1190000017926997

配置SpringBoot方便的切换jar和war的更多相关文章

  1. SpringBoot小技巧:Jar包换War包

    SpringBoot小技巧:Jar包换War包 情景 我们都知道springBoot中已经内置了tomcat,是不需要我们额外的配置tomcat服务器的,但是有时这也可能是我们的一个瓶颈,因为如果我们 ...

  2. SpringBoot部署jar与war

    jar部署与启动/关闭 1.打包 clean 清理已有target目录 package 重新打包 获取打包路径,通过 scp命令发送到服务器端,scp -P ${port} ${.jar} ${use ...

  3. 关于springboot项目的jar和war两种打包方式部署的区别

    关于springboot项目的jar和war两种打包方式部署的区别 关于springboot项目的jar和war两种打包方式部署的区别? https://bbs.csdn.net/topics/392 ...

  4. Spring Boot学习笔记(八)使用jar和war方式打包并在外部Tomcat中部署运行

    使用war包的方式发布到外部Tomcat中去 首先修改pom.xml中的配置,使打包方式设置为war包的形式 然后 maven update project 更新下项目 Application入口文件 ...

  5. gradle结合spring-boot生成可运行jar包,并打印日志

    1.用gradle把springboot项目打包成jar 1.1 build.gradle 中添加 buildscript { repositories { mavenLocal() maven { ...

  6. 清晰梳理最全日志框架关系与日志配置-SpringBoot 2.7.2 实战基础

    优雅哥 SpringBoot 2.7.2 实战基础 - 07 - 日志配置 Java 中日志相关的 jar 包非常多,log4j.log4j2.commons-logging.logback.slf4 ...

  7. SpringBoot快速引入第三方jar包

    工作中,我们常会用到第三方jar包,而这些jar包往往在maven仓库是搜不到的,下面推荐一种简单.快速的引入第三方依赖的方法: 比如第三方jar包在lib文件夹下,对pom.xml的配置如下: &l ...

  8. SpringBoot启动方式讲解和部署war项目到tomcat9

    1.SpringBoot启动方式讲解和部署war项目到tomcat9简介:SpringBoot常见启动方式讲解和部署war项目Tomcat 1.ide启动 2.jar包方式启动 maven插件: &l ...

  9. SpringBoot项目打包成jar后,启动脚本

    将springboot项目打包成jar后,上传至服务器,每次都需要手敲命令,重新部署项目,可将这些命令写入脚本中,直接运行. 启动脚本(start.sh): CUR_PATH=$(cd "$ ...

随机推荐

  1. VStudio2015 开发MD风格的windows软件(附上使用第三方库教程)

    MD就是Google的一个安卓5.0+好看界面,都知道win下没有,那么就有大牛弄出了C#版的MD 特别说明:开发环境是.net 4.6 下面开始教程喂! 新建一个工程,这些不要我说了吧,如果没一点基 ...

  2. Redux学习笔记-基础知识

      Redux概述 是什么:Redux是管理状态的容器,提供可预测的状态管理. 怎么做:Redux主要是用来管理组件或者应用的状态,本质上跟一个事件处理器差不多.通过分发action触发reduce来 ...

  3. 零零碎碎的java知识:static属性、普通属性、static代码块、普通代码块、构造函数

    本文中结论仅经本机测试,不保证在别的环境下成立.如果有什么不成立的地方务必告诉我_(:_」∠)_ java的内存是动态分配的,其机制和c/c++相当不一样……emmm在此不表. static: ·st ...

  4. idea 安装findBugs 和 checkStyle

    1.fiindBugs是一款 静态分析工具,检查程序潜在bug,在bug报告中快速定位到问题的代码上.在idea下面安装很简单可以参考 http://zhongmin2012.iteye.com/bl ...

  5. JDBC事务和数据库事务嵌套的讨论 .

    首先必须执行con.setAutoCommit(false)方法,将JDBC事务设置为手动提交,否则手动提交con.commit()无效,手动回滚con.rollback()引发SQLExceptio ...

  6. TCP_Wrappers 简介

    TCP_Wrappers     简介 TCP_Wrappers是一个工作在第四层(传输层)的的安全工具,对有状态连接的特定服务进行安全检测并实现访问控制,凡是包含有libwrap.so库文件的的程序 ...

  7. 【Leetcode】【Medium】Unique Binary Search Trees

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...

  8. $.on()方法和addEventListener改变this指向

    jQuery $.on()方法和addEventListener改变this指向 标签(空格分隔): jQuery JavaScript jQuery $.on() jq的绑定事件使用$([selec ...

  9. January 15 2017 Week 3 Sunday

    A good book is the best of friends, the same today and forever. 好书乃挚友,情谊永不渝. For a coder, that is no ...

  10. copy "xxxxx\xx.dll xxxxxxx\ ” 已退出,代码为1 错误解决方法

    右键=>属性=>生成事件里面,查看预先生成事件命令行和后期生成事件命令行,查看复制的Dll是否存在已经路径是否正确