java 从Spring创建war文件:在Eclipse中 Boot 项目

ha5z0ras  于 2023-01-15  发布在  Java
关注(0)|答案(7)|浏览(128)

我对Sping Boot 很陌生,我已经完成了一个在我的本地主机上运行良好的应用程序。因为我被告知要在我的本地主机之外部署它,例如在webbhotel或simulal上,我需要将项目导出为war文件,而不是jar文件。
更新!!我将该项目作为SpringInitialzr中生成的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>

来自Sping Boot 参考页面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>

我是否需要添加spring-boot-starter-tomcat依赖项,并添加provided以及tomcat-embed-碧玉,以便我的依赖项将是这样的?

<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〉JAR FILE,它可以找到它,但如果我尝试导出Web〉WAR FILE,它就找不到它
有人知道我做错了什么吗?是否有必要导出到WAR文件以部署到外部服务器?

2exbekwf

2exbekwf1#

您需要在@SpringBootApplication中扩展SpringBootServletInitializer
您不需要为生成war文件添加sprinng-boot-starter-tomcat依赖项

在pom.xml中使用以下配置

<packaging>war</packaging>

配置项目的生成路径并选择JDK
右键单击项目〉运行方式〉Maven安装
它将在目标文件夹中生成war文件。

复制这个war并部署到任何web/应用服务器(我已经将它重命名为demo.war)。
您可以使用主机名后跟端口和应用程序名称来访问应用程序。

oug3syen

oug3syen2#

要在STS(Spring工具套件)中生成WAR文件:运行方式-〉Maven安装

yrefmtwq

yrefmtwq3#

pom.xml中更改为<packaging>war</packaging>后。
使用以下命令:mvn package

omtl5h9j

omtl5h9j4#

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

pw9qyyiw

pw9qyyiw5#

我通过以下步骤生成了一个war文件:
1.添加上述依赖性。
1.打开命令提示符。

  1. cd到您的项目目录中。
    1.运行以下命令:mvn clean install.
    然后在目标目录中生成一个war文件。
ssm49v7z

ssm49v7z6#

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

wkftcu5l

wkftcu5l7#

步骤1:-通过扩展SpringBootServletInitializer创建ServletInitializer文件

public class ServletInitializer extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(DemoApplication.class);
}
}

步骤2:-在主类中使用@SpringBootApplication

@SpringBootApplication
public class DemoApplication {

 public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
 }
}

步骤3:-在pom.xml中将类型打包为war

<packaging>war</packaging>

步骤4:-给予构建文件名,如下所示

<build>
 <finalName>demo</finalName>
</build>

步骤5:-添加外部tomcat依赖项作为提供的作用域

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

注意:-为了便于参考,我添加了完整的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.7</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
    <java.version>1.8</java.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

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

<build>
 <finalName>demo</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

相关问题