从Spring创建war文件:在Eclipse中启动项目

时间:2017-12-20 14:33:01

标签: java eclipse maven spring-boot war

我是Spring Boot的新手,我已经完成了一个在我的localhost上运行良好的应用程序。因为我被告知要在我的localhost之外部署它,例如webbhotel或simular,我需要将项目导出为war文件而不是jar文件。

UPDATE !! 我将项目作为Spring Initialzr中生成的Springproject运行,并将Eclipse用作IDE。

在Eclipse中,我遵循了步骤

<packaging>war</packaging>

<dependencies>
    <!-- … -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <!-- … -->
</dependencies>

来自Spring Boot Referencepage https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file

在我的项目中,我使用

<dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>

我是否需要添加sprinng-boot-starter-tomcat依赖项并添加提供给tomcat-embed-jasper以及我的依赖关系将是这样的?

<dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
     <dependency>
    <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>

当我尝试在Eclipse中导出到war-file时,Eclipse无法找到我的项目。它可以找到它,如果我尝试导出Java&gt; JAR FILE但是如果我尝试Web&gt; WAR FILE

有人知道我做错了什么,是否有必要导出到WAR文件以部署到外部服务器?

7 个答案:

答案 0 :(得分:9)

您需要在@SpringBootApplication中扩展**** SpringBootServletInitializer ****

您不需要为战争文件生成添加**** sprinng-boot-starter-tomcat ****依赖

enter image description here

在pom.xml中使用以下配置

<packaging>war</packaging>

为项目配置构建路径并选择JDK

右键点击项目&gt;运行方式&gt; Maven安装

它将在目标文件夹中生成war文件。

enter image description here

复制此战争并部署到任何Web /应用程序服务器(我已将其重命名为demo.war)。

您可以使用主机名,然后输入端口和应用名称来访问该应用。

enter image description here

答案 1 :(得分:0)

要在STS(Spring工具套件)中生成WAR文件,请执行以下操作: 运行-> Maven安装

答案 2 :(得分:0)

如果要将Spring Boot项目部署为war文件,则需要执行以下三个步骤:

  1. 扩展SpringBootServletInitializer

    Content-Disposition: attachment; filename="??.txt"; filename*=UTF-8''日本.txt
        ASCII: ??.txt
        UTF-8: 日本.txt
    Content-Disposition: attachment; filename*=UTF-8''日本.txt
        ASCII: 
        UTF-8: 日本.txt
    Content-Disposition: attachment; filename="filename.jpg"
        ASCII: filename.jpg
        UTF-8: 
    Content-Disposition: attachment; filename="file-2020-April.txt.vbs"
        ASCII: file-2020-April.txt.vbs
        UTF-8: 
    

    如果您使用多个主类,则定义启动类

    @SpringBootApplication
    public class DemoApplication extends SpringBootServletInitializer {
    
    public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
    }
    
    
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.sources(DemoApplication.class);
    }
    }
    
    1. 将包装更新为war pom.xml

      <start-class>com.javavogue.DemoApplication</start-class>
      
    2. 将嵌入式servlet容器标记为已提供。在pom文件中。

      参考:Deploy a Spring Boot WAR to Tomcat Server

答案 3 :(得分:0)

<packaging>war</packaging>中更改为pom.xml之后。

使用命令:mvn package

答案 4 :(得分:0)

您也可以通过选择菜单 File -> Export -> Web -> War file

答案 5 :(得分:0)

我通过以下步骤生成了一个war文件:

  1. 添加上述依赖项。
  2. 打开命令提示符。
  3. cd 进入您的项目目录。
  4. 运行命令:mvn clean install

然后会在目标目录下生成一个war文件。

答案 6 :(得分:0)

如果您使用的是 maven,您可以添加标签来指定我们要创建的类型 - jar 或 war。之后在 sts 中触发 maven 构建并指定目标 - 全新安装并指定要为构建运行的线程数。如果你想跳过测试用例,你可以给skipTest =true,或者如果你从命令提示符运行,你可以给-Dmaven.test.skip=true。 完成后,war 文件将在目标文件夹下生成。 (除非我们指定了特定的部署文件夹)