尝试在外部tomcat中部署springboot应用程序时,我无法部署。在pom.xml中,如果我排除了tomcat依赖项,那么我就不会遇到编译时错误。由于我在项目中使用过tomcat jar类。请让我知道如何部署该项目。
答案 0 :(得分:1)
我遇到了与您相同的问题,并且提出了解决方案。可能不是最好的,但是它可以工作...
首先,您需要两个应用程序:
Application.java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
WarApplication
@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文档中传统部署的链接。
答案 1 :(得分:1)
作为@Gableg的回答,
在pom.xml中:
<packaging>war</packaging>
设置为“不打架”。
基本上@Gableg的两个条件和我上面指定的条件就足够了。 树状条件足以使应用程序可在外部tomcat中部署。
我在下面引用了该视频。它确实有用。