使用Maven为Spring-boot Web应用程序生成工作的War文件

发布于 2021-02-01 13:16:39

我们有一个由Maven管理的spring-
boot应用程序,现在需要使用WAR文件在tomcat中进行部署。在开发过程中,我们使用maven通过以下命令启动嵌入式tomcat:

mvn -D"-classpath %classpath package.path.App" -D"exec.executable=java" process-classes org.codehaus.mojo:exec-maven-plugin:1.2.1:exec

我可以通过运行构建战争文件mvn war:war,但是如果我尝试部署产生的战争,则会产生错误:

SEVERE: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext
...
Caused by: java.lang.IllegalStateException: No SpringApplication sources have been defined. Either override the configure method or add an @Configuration annotation

我尝试将mainClass指令添加到maven-war-plugin的配置中,但无济于事。

关注者
0
被浏览
148
1 个回答
  • 面试哥
    面试哥 2021-02-01
    为面试而生,有面试问题,就找面试哥。

    在邓尼的建议下,我设法发动了战争。

    基本上,我需要@SpringBootApplication在扩展类上添加注释SpringBootServletInitializer,并覆盖其configure方法。

    所以我的代码比较像:

    +@SpringBootApplication
     public class WebAppInitializer extends SpringBootServletInitializer {
    
    +        @Override
    +       protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    +               return application.sources(App.class);
    +       }
    

    我仍然有一个错误,但是只是在spring开始之后,但是我会在另一个问题中提出这个问题。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看