【问题标题】:Not able to deploy springboot application in an external tomcat无法在外部 tomcat 中部署 Spring Boot 应用程序
【发布时间】:2018-12-21 13:29:06
【问题描述】:
尝试在外部 tomcat 中部署 springboot 应用程序时,我无法部署。在 pom.xml 中,如果我排除了 tomcat 依赖项,那么我不会面临编译时错误。因为我在我的项目中使用了 tomcat jar 类。请让我知道如何部署该项目。
【问题讨论】:
标签:
java
maven
spring-boot
tomcat
【解决方案1】:
我遇到了和你一样的问题,我想出了一个解决方案。它可能不是最好的,但它确实有效......
首先你需要两个应用程序:
Application.java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
战争应用
@SpringBootApplication
public class WarApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(WarApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(WarApplication.class, args);
}
}
在这之后你需要修改你pom.xml这个:
<profiles>
<profile>
<id>tomcat</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<project.packaging>war</project.packaging>
<project.start-class>com.whatever.WarApplication</project.start-class>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</profile>
<profile>
<id>springboot</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<project.packaging>jar</project.packaging>
<project.start-class>com.whatever.Application</project.start-class>
</properties>
</profile>
</profiles>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<inherited>true</inherited>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- Package as an executable jar/war -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<configuration>
<profiles>
<profile>tomcat</profile>
<profile>springboot</profile>
</profiles>
<mainClass>${project.start-class}</mainClass>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
基本上,您只是根据必须部署的位置制作配置文件。但是如果你只需要部署在 tomcat 上,你可以删除配置文件。在这个 pom 中重要,它是 tomcat 配置文件中的<scope>provided</scope>。 Here 是 Spring 文档中 Traditional Deployment 的链接。