由于不是所有人都喜欢简单化,jar包的方便不用,被要求打war包,在这里书写一下打war包的过程.全文以tomcat作为服务器来说明过程。
1,首先pom文件,如果你创建项目的时候是采用的内嵌服务器的形式,那么需要排除掉内嵌的tomcat,所以看下面:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
2,排除掉内嵌的服务器,我们这个时候需要引入外部服务器tomcat,和servlet,由于SpringBootServletInitializer需要servlet包所以需要引入servlet jar包。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
servlet的jar包不要引用,不然会和tomcat中的jar包冲突。
为什么使用provided,编译和测试有效,最后生成war包不会产生。
3,使用外部服务器时,就不能依赖主函数了,而是需要 使用java函数或者文件xml的形式来配置启动spring应用上下文,需要在启动类中继承SpringBootServletInitializer并实现configure方法。
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(启动类.class);
}
4,打包的方式也需要变更,pom文件中的<packaging>war</packaging>
maven构建也需要变化
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>主类的位置,完成包名+主类名</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.3.RELEASE</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>//java版本
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
网友评论