springboot的应用打包默认是打成jar包,web项目默认使用内置的tomcat支持。但有时候我们需要打成war包放到指定tomcat中运行。
1.
<modelVersion>4.0.0</modelVersion>
<artifactId>interface</artifactId>
<packaging>war</packaging>
packageing是war
2
@SpringBootApplication
@EnableWebSocket
@EnableCaching
public class InterfaceApplication extends SpringBootServletInitializer {
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(InterfaceApplication.class);
}
public static void main(String[] args) throws IOException {
SpringApplication.run(InterfaceApplication.class, args);
}
}
继承SpringBootServletInitializer
3
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 热部署 -->
<configuration>
<fork>false</fork>
</configuration>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-xmls</id>
<phase>process-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
我的src.main.java下有mapper.xml文件所有这里配置下。
注:我这里并没有去除spring-boot-starter-web 中的tomcat。但好像也没啥影响。
也没有配置<artifactId>javax.servlet-api</artifactId> 编译也没问题。原因目前不清除。有时间再研究吧
访问:
http://127.0.0.1:8080/interface-0.0.1-SNAPSHOT
8080是Tomcat端口。
spring boot配置文件的端口不用管,因为用的不是内置tomcat。。。
访问路径名中interface-0.0.1-SNAPSHOT就是打出的war包名。跟spring boot配置文件中起的项目名也没关系。
因为要入乡随俗哈哈哈