为了账号安全,请及时绑定邮箱和手机立即绑定

如何为tomcat配置maven-war-plugin

如何为tomcat配置maven-war-plugin

白衣染霜花 2022-12-21 12:02:50
我无法为 Tomcat 生成正确的 WAR 文件。我正在使用 MAVEN 3.6.1、Java 12.0.1 和 IDE Eclipse。我的应用程序在 eclipse 中运行时运行良好(运行方式 > Spring Boot 应用程序),但问题是当我在生成 WAR 文件后尝试运行它时。我正在做 java -jar .war 并且我得到:Error: Could not find or load main class com.blw.linemanager.Application Caused by: java.lang.ClassNotFoundException: com.blw.linemanager.Application我正在谷歌搜索和阅读 stackoverflow,因为我发现了很多关于它的帖子,但仍然无法运行它。我做错了什么?阅读一些内容后,我发现我有一些如何配置 maven-war-plugin(我说得对吗?)并且在 pom 中我做了一些更改,但它没有帮助。也因为一开始我收到错误“没有主要清单属性”我添加它现在它看起来像这样Manifest-Version: 1.0Created-By: Apache Maven ${maven.version}Build-Jdk: ${java.version}我的思维方式是错误的吗?我应该能够将 .war 文件作为 java -jar .war 运行还是这是误解?@SpringBootApplicationpublic class Application extends org.springframework.boot.web.support.SpringBootServletInitializer {    public static void main(String [] args) {        SpringApplication app = new SpringApplication(Application.class);        app.run(args);    }    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {        return builder.sources(Application.class);    }}
查看完整描述

2 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

最好从这里获取一个可用的 spring boot 应用程序,以避免版本冲突等。对于war-file 部署(例如到本地 tomcat),您的应用程序必须扩展 SpringBootServletInitializer:


    @SpringBootApplication

    public class SpringBootTomcatApplication extends SpringBootServletInitializer {

      public static void main(String[] args) {

        SpringApplication.run(SpringBootTomcatApplication.class, args);

      }


      @Override

      protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

        return builder.sources(SpringBootTomcatApplication.class);

      }

    }

改变你pom的 packagingto war。


<packaging>war</packaging>

要生成war-file,您只需要spring-boot-maven-plugin:


<build>

  <plugins>

    <plugin>

      <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-maven-plugin</artifactId>

    </plugin>

  </plugins>

</build>

是的,你不需要maven-war-plugin。仅出于测试目的,让我们注释我们的应用程序@RestController并引入一个简单的端点:


    @RestController

    @SpringBootApplication

    public class SpringBootTomcatApplication extends SpringBootServletInitializer {

    ...

      @RequestMapping(value = "/")

      public String hello() {

        return "Hello World from Tomcat";

      }

    }

在Local terminal(在 eclipse Ctrl+Alt+T 中)只需输入而不是从文件夹mvn package复制生成的文件,将其粘贴到本地 Tomcat 的文件夹下,请求http://localhost:8080/ {your-application-name} 然后你应该看到消息。现在您可以添加所需的依赖项并继续编码。 wartargetwebappsHello World from Tomcat


查看完整回答
反对 回复 2022-12-21
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

在 pom.xml 中添加带有版本详细信息的包装类型,例如


<packaging>jar</packaging>

要么


<packaging>war</packaging>

然后,附加构建标签来定义 jar / war 的名称,例如,


<build>

    <finalName>YOUR-APP_NAME</finalName>

    <plugins>

        <plugin>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-maven-plugin</artifactId>

        </plugin>

    </plugins>

</build>

然后,以目标运行您的应用程序


清洁包装


在目标文件夹中创建 jar/war。


将您的 war 文件重命名为 ROOT,如 ROOT.war


最后一步将您创建的 jar/war 复制到 tomcat webapps 文件夹中并启动 tomcat。


查看完整回答
反对 回复 2022-12-21
  • 2 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号