SpringBoot项目打包war发布到Jetty9 |
您所在的位置:网站首页 › java启动war › SpringBoot项目打包war发布到Jetty9 |
1.前言
虽然官方推荐SpringBoot项目采用jar包方式发布,但是也可以打成war包发布到外部web容器(如Jetty,tomcat等)。接下来我们讨论一下,如何将一个SpringBoot项目打包成war包。 更多参考:《SpringBoot项目发布到服务器的两种方式war和jar》。 2.搭建SpringBoot项目 2.1创建SpringBoot目录参考《Maven的约定》手工创建工程目录。当然,你绝对可以使用IDE来创建。 # 存放pom.xml和所有的子目录 ~/Desktop$ mkdir FlowerShop # 项目的java源代码 ~/Desktop/FlowerShop$ mkdir -p src/main/java # 创建包com.flower和com.flower.controller ~/Desktop/FlowerShop$ mkdir -p src/main/java/com/flower/controller # 目录结构 ~/Desktop/FlowerShop$ tree -L 6 . └── src └── main └── java └── com └── flower └── controller这个目录对于我们将要演示的内容已经足够了。 2.2 初始化pom.xml创建pom.xml ~/Desktop/FlowerShop$ touch pom.xmlpom.xml中的内容 4.0.0 com.flower FlowerShop 1.0-SNAPSHOT war 1.8 org.springframework.boot spring-boot-starter-parent 2.2.6.RELEASE org.springframework.boot spring-boot-starter-web FlowerShopDemo org.springframework.boot spring-boot-maven-plugin 2.3创建启动类创建MainApplicationStarter.java启动类 ~/Desktop/FlowerShop$ touch src/main/java/com/flower/MainApplicationStarter.java ~/Desktop/FlowerShop$ vim src/main/java/com/flower/MainApplicationStarter.javaMainApplicationStarter.java中的内容 package com.flower; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; @SpringBootApplication public class MainApplicationStarter{ public static void main(String[] args) { SpringApplication.run(MainApplicationStarter.class, args); } } 2.4创建Controller创建HomeController.java ~/Desktop/FlowerShop$ touch src/main/java/com/flower/controller/HomeController.java ~/Desktop/FlowerShop$ vim src/main/java/com/flower/controller/HomeController.javaHomeController.java中的内容 package com.flower.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HomeController{ @GetMapping("/home") public String getHomePage() { return "I Love you to come to my Flower Shop!"; } } 2.5运行测试 ~/Desktop/FlowerShop$ mvn spring-boot:run
org.apache.juli.logging.Log: Provider org.eclipse.jetty.apache.jsp.JuliLog not a subtype:Jetty容器提供的JuliLog不是org.apache.juli.logging.Log的子类,这是由Jetty的加载机制造成的(直接部署到tomcat是没有这个问题的)。pom.xml作如下修改: spring-boot-starter-web依赖中将tomcat排除引入spring-boot-starter-jetty依赖注释掉 spring-boot-maven-plugin插件 4.0.0 com.flower FlowerShop 1.0-SNAPSHOT war 1.8 org.springframework.boot spring-boot-starter-parent 2.2.6.RELEASE org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-jetty FlowerShopDemo 3.2修改启动类因为我们要用外部web容器启动项目,所以启动类必须继承SpringBootServletInitializer,并重写configure方法。如果使用内嵌的web容器则不需要继承SpringBootServletInitializer。 package com.flower; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class MainApplicationStarter extends SpringBootServletInitializer{ public static void main(String[] args) { SpringApplication.run(MainApplicationStarter.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // 注意这里要指向原先用main方法执行的Application启动类 return builder.sources(MainApplicationStarter.class); } } 4.打包war部署到Jetty9进行打包 ~/Desktop/FlowerShop$ mvn clean package将FlowerShop/target/xxx.war包复制到Jetty的webapps目录下,重启Jetty,在浏览器输入: SpringBoot项目官方推荐部署方式是jar包运行方式,即nohup java -jar xxx.jar &。 如果要用jar包方式部署,那么就要进行还原,但是不需要全部还原,只需添加回 spring-boot-maven-plugin插件即可: org.springframework.boot spring-boot-maven-pluginDemo下载 欢迎关注 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |