Spring Boot (四):打包部署

springboot 打包与部署

一、jar 包

pom文件中packaging:

1、编译

进入项目目录,使用如下命令:
//命令打包(-Dmaven.test.skip=true 跳过测试)
mvn clean package -Dmaven.test.skip=true或者执行Maven install

2.运行

当前目录的target 就有一个.jar 文件
#启动命令
nohub java -jar xxxx.jar >/dev/null 2>&1 &

二、war 包

1、修改package

(a)、修改包类型

<!-- <packaging>jar</packaging> -->
<packaging>war</packaging>

(b)、移除内置的tomcat插件

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 移除tomcat插件 -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- 移除之后会报错,加入下面的依赖 -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <scope>provided</scope>
</dependency>

2、修改启动类

继承SpringBootServletInitializer 类,重写configure()方法

package top.lrshuai.blog;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.web.servlet.ErrorPage;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.http.HttpStatus;

@SpringBootApplication
@MapperScan("top.lrshuai.blog.dao")
public class Application extends SpringBootServletInitializer{

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // TODO Auto-generated method stub
//      return super.configure(builder);
        return builder.sources(this.getClass());
    }
}

3、编译

(a)、和编译jar一样,mvn clean package -Dmaven.test.skip=true

(b)、(还有一种,mvn clean install -Dmaven.test.skip=true)

4、部署

放入tomcat 的webapps 目录下,启动tomcat,搞定

三、可能出现的问题

(a)、就是静态文件资源 访问404

解决方案:

所有链接都写相对路径,可能以前你这样写<link href="/css/blog.css" rel="stylesheet" > 就可以了,打包jar 我记得好像是没问题的,但是war就出问题了

正解应该是 <link href="../static/css/blog.css" rel="stylesheet" th:href="@{/css/blog.css}">

(b)、另一种是js 的路径,比如发ajax请求。路径也会有问题

我的方案:

1、页面头部添加这行<meta name="_ctx" th:content="@{/}" />
2、js 获取它的路径,
<script type="text/javascript">
var _ctx = $("meta[name=‘_ctx‘]").attr("content");
_ctx = _ctx.substr(0, _ctx.length - 1);
</script>
3、然后在每个ajax 请求的前面加入_ctx 。比如:url = "/article/add" 就改为url = ctx+"/article/add"

原文地址:https://www.cnblogs.com/xianshiwang/p/9064470.html

时间: 2024-11-06 03:34:07

Spring Boot (四):打包部署的相关文章

Eclipse Spring boot项目热部署

spring boot项目 热部署 一,参考文档:springboot 热部署 note: 1.使用eclipse: project-->Build Automatically (选中) 2.Digital Twin 项目使用Spring boot 版本为:1.2.3.RELEASE,使用spring-boot-devtools无效. 查看Spring-boot-devtools,最低版本为1.3.0. 猜测Spring boot 整合Spring-boot-devtools最低版本为1.3.0

IDEA中Spring boot配置热部署无效问题解决方式(转)

IDEA中Spring boot配置热部署无效问题解决方式 2018年01月31日 20:30:59 阅读数:1426 该配置方式属于通过配置devtools实现热部署 只要在pom文件中添加下面代码段即可 <!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId>

Spring Boot用Docker部署

Spring Boot与Docker部署 开启Docker远程访问 首先需要开启docker远程访问功能,以便可以进行远程操作. CentOS 6 修改/etc/default/docker文件,重启后生效(service docker restart). DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=0.0.0.0:2375" CentOS 7 打开/usr/lib/systemd/system/docker.service文件,修改E

Spring Boot与Docker部署

Spring Boot与Docker部署 开启Docker远程访问 首先需要开启docker远程访问功能,以便可以进行远程操作. CentOS 6 修改/etc/default/docker文件,重启后生效(service docker restart). DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=0.0.0.0:2375" CentOS 7 打开/usr/lib/systemd/system/docker.service文件,修改E

spring boot项目打包成war并在tomcat上运行的步骤

把spring-boot项目按照平常的web项目一样发布到tomcat容器下 一.修改打包形式 在pom.xml里设置 <packaging>war</packaging> 二.移除嵌入式tomcat插件 在pom.xml里找到spring-boot-starter-web依赖节点,在其中添加如下代码, 第一种<dependency> <groupId>org.springframework.boot</groupId> <artifact

Spring Boot实现热部署

在Spring Boot实现代码热部署是一件很简单的事情,代码的修改可以自动部署并重新热启动项目. 引用devtools依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> 这

IntelliJ IDEA下spring boot项目打包

Spring Boot自带Tomcat插件,可以直接编写启动类,开启Tomcat服务 springboot适合前后端分离,打成jar进行部署更合适 application.properties配置端口 server.port=8089 marven的配置文件pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4

spring boot 之热部署(三)

热部署:当发现程序修改时自动启动应用程序. spring boot使用的是spring-boot-devtools是一个为开发者服务的一个模块.其原理用了classLoader 其中一个加载不变的类,另一个restart ClassLoader加载变得类. devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机). 不说废话,我喜欢的Coding就是简单and直接.我写代码一般都是截图,不会粘代码,目的是让你们能敲一遍,我认为程序是敲出来的不是看出来的.你们要懂

IDEA 中 Spring Boot 启用热部署

maven 配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/

1. Spring boot 之热部署

1. spring boot 热部署 1.1. springloaded springloaded可以实现修改类文件的热部署.下载地址:springloaded 安装单击Run Configurations... 在Arguments标签页的vm arguments中填入如下内容,注意下面指定的springloaded路径: -javaagent:F:\sortingData\maven\Repositories\Maven\org\springframework\springloaded\1.