SpringBoot - 打包,war包,jar包

红太狼 2023-09-29 14:32 72阅读 0赞

一、war包

1、创建一个springboot的web应用

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

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

a71be0128ae4438eaf3d21359a7bf0c4.png

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

b43c4fbd270347b4ac83d8b5f8dbbdad.png

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

  1. server.port=8081
  2. server.servlet.context-path=/myjsp
  3. spring.mvc.view.prefix=/
  4. spring.mvc.view.suffix=.jsp

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

(1)打包类型

  1. <!-- 打包类型 -->
  2. <packaging>war</packaging>

(2)依赖

  1. <dependencies>
  2. <!--加入处理jsp的依赖-->
  3. <dependency>
  4. <groupId>org.apache.tomcat.embed</groupId>
  5. <artifactId>tomcat-embed-jasper</artifactId>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-web</artifactId>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-test</artifactId>
  14. <scope>test</scope>
  15. </dependency>
  16. </dependencies>

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

  1. <build>
  2. <!--打包后的文件名称-->
  3. <finalName>mybootweb</finalName>
  4. <!--resources插件, 把jsp编译到指定的目录-->
  5. <!--指定编译jsp到META-INF/resources-->
  6. <resources>
  7. <resource>
  8. <directory>src/main/webapp</directory>
  9. <targetPath>META-INF/resources</targetPath>
  10. <includes>
  11. <include>**/*.*</include>
  12. </includes>
  13. </resource>
  14. <!--使用mybatis,指定mapper文件放在src/main/java目录-->
  15. <resource>
  16. <directory>src/main/java</directory>
  17. <includes>
  18. <include>**/*.xml</include>
  19. </includes>
  20. </resource>
  21. <!--指定src/main/resources下面的所有文件,都包含到classes目录-->
  22. <resource>
  23. <directory>src/main/resources</directory>
  24. <includes>
  25. <include>**/*.*</include>
  26. </includes>
  27. </resource>
  28. </resources>
  29. <plugins>
  30. <plugin>
  31. <groupId>org.springframework.boot</groupId>
  32. <artifactId>spring-boot-maven-plugin</artifactId>
  33. </plugin>
  34. </plugins>
  35. </build>

编写一个controller接收请求

  1. @Controller
  2. public class JspController {
  3. @RequestMapping("/main")
  4. public String main(Model model){
  5. model.addAttribute("data","SpringBoot打包为war文件");
  6. return "index";
  7. }
  8. }

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

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

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

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

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

  1. @SpringBootApplication
  2. public class SpringbootWarApplication {
  3. public static void main(String[] args) {
  4. SpringApplication.run(SpringbootWarApplication.class, args);
  5. }
  6. }
  7. /**
  8. * SpringBootServletInitializer: 继承SpringBootServletInitializer才可以使用外部tomcat(web容器启动项目),可以自定义设置端口号,项目名;
  9. * 不需要用外部tomcat的话继承不继承都可以;继承之后要实现他的configure方法
  10. */
  11. public class ServletInitializer extends SpringBootServletInitializer {
  12. @Override
  13. protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
  14. return application.sources(SpringbootWarApplication.class);
  15. }
  16. }

也可以主启动类直接继承

  1. /**
  2. * SpringBootServletInitializer: 继承这个类, 才能使用独立tomcat服务器
  3. */
  4. @SpringBootApplication
  5. public class JspApplication extends SpringBootServletInitializer {
  6. public static void main(String[] args) {
  7. SpringApplication.run(JspApplication.class, args);
  8. }
  9. @Override
  10. protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
  11. return builder.sources(JspApplication.class);
  12. }
  13. }

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

febcffb72476446182eda3acbd8edd4b.png

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

注:

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

798e35bed11d407db25ab1b441eceb4e.png

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

a67186f200cb4f00b31813a3ce5c80a0.png

8、查看运行效果

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

f972b95b9eed4da08578bf150b1915a5.png

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

5c56cf2e22484f5fa09073b5fdde0a49.png

二、jar包

1、创建一个springboot的web应用

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

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

a71be0128ae4438eaf3d21359a7bf0c4.png

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

b43c4fbd270347b4ac83d8b5f8dbbdad.png

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

  1. server.port=8081
  2. server.servlet.context-path=/myjsp
  3. spring.mvc.view.prefix=/
  4. spring.mvc.view.suffix=.jsp

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

(1)打包类型

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

(2)依赖

  1. <dependencies>
  2. <!--加入处理jsp的依赖-->
  3. <dependency>
  4. <groupId>org.apache.tomcat.embed</groupId>
  5. <artifactId>tomcat-embed-jasper</artifactId>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-web</artifactId>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-test</artifactId>
  14. <scope>test</scope>
  15. </dependency>
  16. </dependencies>

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

注意:

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

  1. <plugins>
  2. <plugin>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-maven-plugin</artifactId>
  5. <!--springboot打包jar,部署jsp文件时,必须指定maven-plugin插件的版本是 1.4.2.RELEASE,其他版本均不支持!!!-->
  6. <version>1.4.2.RELEASE</version>
  7. </plugin>
  8. </plugins>
  9. <build>
  10. <!--打包后的文件名称-->
  11. <finalName>mybootjar</finalName>
  12. <!--resources插件, 把jsp编译到指定的目录-->
  13. <!--指定编译jsp到META-INF/resources-->
  14. <resources>
  15. <resource>
  16. <directory>src/main/webapp</directory>
  17. <targetPath>META-INF/resources</targetPath>
  18. <includes>
  19. <include>**/*.*</include>
  20. </includes>
  21. </resource>
  22. <!--使用mybatis,指定mapper文件放在src/main/java目录-->
  23. <resource>
  24. <directory>src/main/java</directory>
  25. <includes>
  26. <include>**/*.xml</include>
  27. </includes>
  28. </resource>
  29. <!--指定src/main/resources下面的所有文件,都包含到classes目录-->
  30. <resource>
  31. <directory>src/main/resources</directory>
  32. <includes>
  33. <include>**/*.*</include>
  34. </includes>
  35. </resource>
  36. </resources>
  37. <plugins>
  38. <plugin>
  39. <groupId>org.springframework.boot</groupId>
  40. <artifactId>spring-boot-maven-plugin</artifactId>
  41. <!--springboot打包jar,部署jsp文件时,必须指定maven-plugin插件的版本是 1.4.2.RELEASE,其他版本均不支持!!!-->
  42. <version>1.4.2.RELEASE</version>
  43. </plugin>
  44. </plugins>
  45. </build>

4、编写一个controller接收请求

  1. @Controller
  2. public class JspController {
  3. @RequestMapping("/main")
  4. public String main(Model model){
  5. model.addAttribute("data","SpringBoot打包为jar文件");
  6. return "index";
  7. }
  8. }

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

069e0d257e5a433b8a21b08913b68108.png

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

1bdf0b0cad7c4c91a542ea637105ff65.png

注:

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

执行 jar 包,启动内置Tomcat

  1. java jar mybootjar.jar

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

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

赋权限 chmod 777 run.sh

启动 shell 脚本: ./run.sh

注:

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

45a5cf45b2804c18a272374dec2ebe4d.png

7、查看运行效果

aa05b4d26be94aeaa4cfb3238b249ad7.png

发表评论

表情:
评论列表 (有 0 条评论,72人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringBoot Jar改造为War

    一.简介 对于默写特殊的业务场景,我们需要把已有的jar包分为改造为war包进行部署,对jar包的整改不会花费太多的工作量,现在讲改造过程梳理如下: 对于Jar包到War