亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何為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} 然后你應該看到消息?,F在您可以添加所需的依賴項并繼續編碼。 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 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號