我是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文件以部署到外部服务器?
答案 0 :(得分:9)
您需要在@SpringBootApplication中扩展**** SpringBootServletInitializer ****
您不需要为战争文件生成添加**** sprinng-boot-starter-tomcat ****依赖
在pom.xml中使用以下配置
<packaging>war</packaging>
为项目配置构建路径并选择JDK
右键点击项目&gt;运行方式&gt; Maven安装
它将在目标文件夹中生成war文件。
复制此战争并部署到任何Web /应用程序服务器(我已将其重命名为demo.war)。
您可以使用主机名,然后输入端口和应用名称来访问该应用。
答案 1 :(得分:0)
要在STS(Spring工具套件)中生成WAR文件,请执行以下操作: 运行-> Maven安装
答案 2 :(得分:0)
如果要将Spring Boot项目部署为war文件,则需要执行以下三个步骤:
扩展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);
}
}
将包装更新为war pom.xml
<start-class>com.javavogue.DemoApplication</start-class>
将嵌入式servlet容器标记为已提供。在pom文件中。
答案 3 :(得分:0)
在<packaging>war</packaging>
中更改为pom.xml
之后。
使用命令:mvn package
答案 4 :(得分:0)
您也可以通过选择菜单 File -> Export -> Web -> War file
答案 5 :(得分:0)
我通过以下步骤生成了一个war文件:
cd
进入您的项目目录。mvn clean install
。然后会在目标目录下生成一个war文件。
答案 6 :(得分:0)
如果您使用的是 maven,您可以添加标签来指定我们要创建的类型 - jar 或 war。之后在 sts 中触发 maven 构建并指定目标 - 全新安装并指定要为构建运行的线程数。如果你想跳过测试用例,你可以给skipTest =true,或者如果你从命令提示符运行,你可以给-Dmaven.test.skip=true。 完成后,war 文件将在目标文件夹下生成。 (除非我们指定了特定的部署文件夹)