我不想创建war文件,然后将其复制到Tomcat的webapps文件夹中。
更新:在Eclipse tomcat容器内运行此应用程序的原因是,我有其他非Spring Boot应用程序依赖于我的新Spring Boot应用程序。
检查你的 pom.xml 文件:
<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>
然后检查您的主应用程序类:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
然后配置项目结构(如您已经完成的那样):
完成!
eclipse-wtp
和war
Application
中扩展SpringBootServletInitializer
为了在Tomcat上运行Spring Boot应用程序,通常产生的产物必须是一个war
应用程序。
为了使其在Eclipse中的Tomcat上运行,您必须使用一个WTP-Project(Web Tools Platform,又称Dynamic Web Module),并使用eclipse-wtp
gradle插件。
必须扩展SpringBootServletInitializer
以使Spring Boot应用程序上下文在启动Tomcat时启动。
Spring提供了一个入门教程,介绍如何使用Spring Boot构建REST webservice。我增强了该项目以与Tomcat和Eclipse一起工作:
示例项目:
git clone https://github.com/spring-guides/gs-rest-service.git
将complete/
子文件夹作为Gradle项目导入。
build.gradle
删除
apply plugin: 'java'
apply plugin: 'eclipse'
添加
apply plugin: 'war'
apply plugin: 'eclipse-wtp'
src/main/java/hello/Application.java
添加 SpringBootServletInitializer
的扩展。
public class Application extends SpringBootServletInitializer {
...
}
完成后,我可以将示例项目部署到在Eclipse中配置的Tomcat服务器并启动服务器。URL为:http://localhost:8080/complete/greeting?name=User
查看完整示例。
对于那些无法看到“部署组件”选项的人,将以下属性添加到.project文件中将启用部署组件选项。
org.eclipse.wst.common.modulecore.ModuleCoreNature
在为我的项目定义打包结构之后,我能够在Tomcat服务器上运行应用程序,而无需手动将war文件复制到webapps目录中。按照以下两个简单步骤,你就可以开始了!
第一步:在你的pom.xml文件中将打包格式从jar改为war。
**<packaging>war</packaging>**
步骤2. 右键单击您的项目,然后执行Maven -> 更新项目。
完成这些步骤后,当您尝试运行项目时,您将找到一个名为“在服务器上运行”的选项。
只需在Spring Boot的主类中添加此注释。
@SpringBootApplication
@Configuration
@ComponentScan(value={"packages name to scan"})
pom.xml
文件中。