SpringBoot - 打包,war包,jar包

2023-10-27

一、war包

1、创建一个springboot的web应用

在src目录下创建一个 webapp目录

我们选择 file ----> Project Structure ---->  选择模块,选择 Web Resource Directories ,新建webapp 目录即可 

即可看到webapp被设为web项目的根目录,并有一个蓝点的标志 

2、在application.properties中配置服务端口,上下文路径;以及视图解析器

server.port=8081
server.servlet.context-path=/myjsp

spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp

3、在pom.xml文件中修改打包类型,依赖jsp,编译插件,以及打包的包名称

(1)打包类型

<!-- 打包类型 -->
    <packaging>war</packaging>

(2)依赖

<dependencies>

        <!--加入处理jsp的依赖-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

(3) 编译路径,以及打包后的名称

<build>

        <!--打包后的文件名称-->
        <finalName>mybootweb</finalName>

        <!--resources插件, 把jsp编译到指定的目录-->
        <!--指定编译jsp到META-INF/resources-->
        <resources>
            <resource>
                <directory>src/main/webapp</directory>
                <targetPath>META-INF/resources</targetPath>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>

            <!--使用mybatis,指定mapper文件放在src/main/java目录-->
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>

            <!--指定src/main/resources下面的所有文件,都包含到classes目录-->
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
        </resources>

        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

编写一个controller接收请求

@Controller
public class JspController {

    @RequestMapping("/main")
    public String main(Model model){
        model.addAttribute("data","SpringBoot打包为war文件");
        return "index";
    }
}

4、war包下,主启动类继承SpringBootServletInitializer

继承SpringBootServletInitializer才可以使用外部tomcat(web容器启动项目),可以自定义设置端口号,项目名

不需要用外部tomcat的话继承不继承都可以

继承之后要实现他的configure方法

使用springboot模板创建war包的web项目,会自动生成两个类如下

@SpringBootApplication
public class SpringbootWarApplication {

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

}


/**
 * SpringBootServletInitializer: 继承SpringBootServletInitializer才可以使用外部tomcat(web容器启动项目),可以自定义设置端口号,项目名;
 * 不需要用外部tomcat的话继承不继承都可以;继承之后要实现他的configure方法
 */
public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SpringbootWarApplication.class);
    }

}

也可以主启动类直接继承

/**
 * SpringBootServletInitializer: 继承这个类, 才能使用独立tomcat服务器
 */
@SpringBootApplication
public class JspApplication  extends SpringBootServletInitializer  {

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

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		return builder.sources(JspApplication.class);
	}
}

5、将项目打包,clean一下,再点击package,左侧 target目录下会生成一个 指定打包后的名称.war 包 

6、将生成的war包拷贝到本地Tomcat安装路径下的 webapps路径下

注:

博主将war包上传到本地Tomcat服务器,只做演示学习使用;并未上传到Linux系统服务器上部署或者通过虚拟机去部署到Linux服务器上

 

 7、然后启动本地Tomcat,双击startup.bat即可

8、查看运行效果

因为启动本地Tomcat服务器默认端口号 8080,项目打包后包名是 mybootwar.war 

如果是本地启动,会查看访问路径如下

二、jar包

1、创建一个springboot的web应用

 在src目录下创建一个 webapp目录

我们选择 file ----> Project Structure ---->  选择模块,选择 Web Resource Directories ,新建webapp 目录即可 

即可看到webapp被设为web项目的根目录,并有一个蓝点的标志 

2、在application.properties中配置服务端口,上下文路径;以及视图解析器

server.port=8081
server.servlet.context-path=/myjsp

spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp

3、在pom.xml文件中修改打包类型,依赖jsp,编译插件,以及打包的包名称

(1)打包类型

<!-- 打包类型;也可不写,默认jar包 -->
    <packaging>jar</packaging>

(2)依赖

<dependencies>

        <!--加入处理jsp的依赖-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

(3) 编译路径,以及打包后的名称

注意:

springboot打包jar,部署jsp文件时,必须指定maven-plugin插件的版本是 1.4.2.RELEASE,其他版本均不支持!!!

     <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!--springboot打包jar,部署jsp文件时,必须指定maven-plugin插件的版本是 1.4.2.RELEASE,其他版本均不支持!!!-->
                <version>1.4.2.RELEASE</version>
            </plugin>
        </plugins>
<build>

        <!--打包后的文件名称-->
        <finalName>mybootjar</finalName>

        <!--resources插件, 把jsp编译到指定的目录-->
        <!--指定编译jsp到META-INF/resources-->
        <resources>
            <resource>
                <directory>src/main/webapp</directory>
                <targetPath>META-INF/resources</targetPath>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>

            <!--使用mybatis,指定mapper文件放在src/main/java目录-->
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>

            <!--指定src/main/resources下面的所有文件,都包含到classes目录-->
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
        </resources>

        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!--springboot打包jar,部署jsp文件时,必须指定maven-plugin插件的版本是 1.4.2.RELEASE,其他版本均不支持!!!-->
                <version>1.4.2.RELEASE</version>
            </plugin>
        </plugins>
    </build>

4、编写一个controller接收请求

@Controller
public class JspController {

    @RequestMapping("/main")
    public String main(Model model){
        model.addAttribute("data","SpringBoot打包为jar文件");
        return "index";
    }
}

5、将项目打包,clean一下,再点击package,左侧 target目录下会生成一个 指定打包后的名称.jar包 

6、到生成 jar包的项目目录下,直接输入 "cmd"

注:

博主将war包上传到本地Tomcat服务器,只做演示学习使用;并未上传到Linux系统服务器上部署或者通过虚拟机去部署到Linux服务器上

执行 jar 包,启动内置Tomcat

java –jar mybootjar.jar

可以将该命令封装到一个 Linux 的一个 shell 脚本中(上线部署) 并命名为 run.sh

#!/bin/sh 
java -jar xxx.jar

赋权限 chmod 777 run.sh

启动 shell 脚本: ./run.sh 

注:

此脚本要和 jar包 保持同一目录下,且运行命令时先切换到上级目录中

7、查看运行效果

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot - 打包,war包,jar包 的相关文章

随机推荐

  • 聚簇索引和二级索引

    原文链接 https blog csdn net jijianshuai article details 79084874
  • SpringCloud项目如何成功打包以及其中的一些坑

    我的项目结构 其中edu online和edu admin是前端项目 其他是后端模块 首先需要在父工程中添加需要打包的模块和打包依赖 如果在父工程中配置过打包依赖则子模块中不需要配置打包依赖 但是如果有子模块需要被其他模块依赖 则需要在被依
  • ROS:解决Error:cannot launch node of type [map_server/map_server]: can't locate node [map_server] in......

    写在前面 本文为原创 如需转载请注明出处 https www jianshu com p e9981bc35cff 欢迎大家留言共同探讨 有误的地方也希望指出 另如果有好的SLAM ROS等相关交流群也希望可以留言给我 在此先谢过了 1 E
  • Gof23设计模式之建造者模式

    1 概述 建造者模式 Builder Pattern 又叫生成器模式 是一种对象构建模式 它可以将复杂对象的建造过程抽象出来 抽象类别 使这个抽象过程的不同实现方法可以构造出不同表现 属性 的对象 建造者模式是一步一步创建一个复杂的对象 它
  • 要求用成员函数实现以下功能由键盘输入,计算长方体的体积,输出3个长方体的体积。

    题目 需要求三个长方体的体积 请编写一个基于对象的程序 数据成员包括length 长 width 宽 height 高 要求用成员函数实现以下功能 1 由键盘输入3个长方体的长 宽 高 2 计算长方体的体积 3 输出3个长方体的体积 请编程
  • linux 关于修改命令提示符

    1 首先 进入root 用户获得权限 输入 su root 2 进入修改提示符的文件 输入 vim etc profile 3 进入文件 不要修改任何地方 在最后加入命令 1 输入 export PS1 e 1 32 40m 孔子曰 e 1
  • Flink将本地数据写入Redis

    第一步 配置文件redis conf cd usr apps redis vim redis conf 先输入 set nu 打开行号标识 69行 bind 127 0 0 1加上注释 取消IP绑定 否则其他主机不能连接 88行 prote
  • sqli-labs第十八十九关

    这两关为头注入 Less 18 POST Header Injection Uagent field Error based 手工注入 这关和下一关必须要抓包才能完成 因为在这里怎么是都没有反应 全是报错的状态 那么我估计就要抓包了 根本判
  • pythonqt对比_用 Python 和 C++ 创建 Qt 程序的简单对比

    假设要做一个简单的小窗口 如下图所示 PyQt 和 C 要用多少代码可以完成呢 效果图 注 本文内容较多 主要是 C 的部分 若有必要请直接跳到最后看结论 一 C 版本 除了最基础的 pro 文件之外 我一共创建了 5 个文件 custom
  • 电脑固定ip地址之后重启却失效了的解决办法

    开始 运行 cmd 回车 英文状态下输入 netsh winsock reset 回车后会提示重启 先不重启 继续输入 netsh int ip reset reset log 回车后会提示重启 此时先重启电脑 重启之后再次设置好固定ip地
  • SQL 映射文件

    SQL 映射文件 SQL 映射文件只有很少的几个顶级元素 按照应被定义的顺序列出 cache 对给定命名空间的缓存配置 cache ref 对其他命名空间缓存配置的引用 resultMap 是最复杂也是最强大的元素 用来描述如何从数据库结果
  • 使用LeNet-5识别手写数字MNIST

    LeNet5 LeNet 5卷积神经网络模型 LeNet 5 是Yann LeCun在1998年设计的用于手写数字识别的卷积神经网络 当年美国大多数银行就是用它来识别支票上面的手写数字的 它是早期卷积神经网络中最有代表性的实验系统之一 Le
  • 管理系统权限篇

    目录 前言 cooike 登录篇 登录 router beforeEach 登录拦截 axios拦截器 token过期出处理 权限篇 router js store permission js 前言 登录 当用户填写完账号和密码后向服务端验
  • 热门Android Studio 插件

    Android Studio是基于JetBrains公司的IntelliJ开发的一款功能强大的开发工具 它具有构建出色Android应用所需要的一切 借助基于IntelliJ IDEA的强大的功能 插件非常丰富 正确的使用插件可以帮助你提高
  • linux脚本判断输出结果,shell脚本中的逻辑判断

    if语法 格式1 if 条件 then 语句 fi 格式2 if 条件 then 语句 else 语句 fi 格式3 if then elif then else fi 逻辑判断表达式 if a gt b if a lt 5 if b eq
  • C进阶:通讯录(动态版本 + 文件操作)附源码

    本文主要讲解通讯录的代码 需要拥有结构体 动态内存开辟 文件操作的知识 目录 一 通讯录思路 二 三个文件的建立 三 所需要使用的变量的创建 包含在头文件contact h中 四 主函数的书写 包含在 test c 中 五 通讯录功能的实现
  • HM Fast Learning

    Whole Structure 7 projects App means application T stands for test TLib is library for developer not for application Vid
  • UEFI源码解析之UEFI_DRIVER

    Dxe Driver可以视作UEFI中的一个服务 在entry中通过protocol安装自己的服务 在Bds等位置通过locate protocol使用该服务 不必依赖与具体的硬件 当需要封装某个设备 控制器或总线的时候 对应于具体的物理实
  • 一款强大的芯片nRF52840及利用蓝牙5.0实现数据远程采集

    一 nRF52840蓝牙芯片简介 自从nordic在2018年强势推出nRF52840这颗重磅级芯片后 蓝牙5 0技术开始在业界流行起来 随后蓝牙5 0技术开始成为了各大品牌的旗舰手机标配功能 1 芯片优势 这个芯片最强大的优势就是低速远距
  • SpringBoot - 打包,war包,jar包

    一 war包 1 创建一个springboot的web应用 在src目录下创建一个 webapp目录 我们选择 file gt Project Structure gt 选择模块 选择 Web Resource Directories 新建