欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

IntelliJ IDEA Spring Boot(9)打成war包

程序员文章站 2024-02-03 20:23:34
...

 http://blog.csdn.net/u011998835/article/details/78386557 上一篇文章 讲了如何打成jar包 发布运行,当然我还是想实际运行一下 war包的打包过程。

   war包的打包过程如下:

   

<groupId>com.dashuai</groupId>
	<artifactId>dadminboot</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>

	<name>DAdminBoot</name>

修改packaging为war包。

剔除掉默认的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>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>

剔除自带的tomcat8的容器,并设定tomcat依赖scope为provided的

如果项目中依旧使用了jsp的话,请设定如下

<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
			<scope>provided</scope>
			<!-- 如果不注释,你会发现main线程运行报404错误,必须使用 spring-boot:run这个命令运行才行。所以我们注释掉-->
		</dependency>
加上scope为provided,尽管项目在运行的时候,不能使用main线程,但打包的时候,请加上scope。build和打包jar是一样的,如下。那么pom文件的就算OK了。

<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>1.4.2.RELEASE</version>
				<configuration>
					<fork>true</fork>
					<mainClass>com.dashuai.dadminboot.DAdminBootApplication</mainClass>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<configuration>
					<failOnMissingWebXml>false</failOnMissingWebXml>
				</configuration>
			</plugin>
		</plugins>
		<resources>
			<!-- 打包时将jsp文件拷贝到META-INF目录下-->
			<resource>
				<!-- 指定resources插件处理哪个目录下的资源文件 -->
				<directory>src/main/webapp</directory>
				<!--注意此次必须要放在此目录下才能被访问到-->
				<targetPath>META-INF/resources</targetPath>
				<includes>
					<include>**/**</include>
				</includes>
			</resource>
			<resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>**/**</include>
				</includes>
				<filtering>false</filtering>
			</resource>
		</resources>
	</build>

接下来还要做一件事情。就是application这个类。

@EnableTransactionManagement
@EnableCaching
@SpringBootApplication
public class DAdminBootApplication extends SpringBootServletInitializer{

	public static void main(String[] args) {
		SpringApplication.run(DAdminBootApplication.class, args);
	}

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		return builder.sources(DAdminBootApplication.class);
	}
}
需要继承SpringBootServletInitializer

然后我们maven clean maven package 打包成war包。

IntelliJ IDEA Spring Boot(9)打成war包
拷贝到tomcat目录下,

IntelliJ IDEA Spring Boot(9)打成war包

运行tomcat,会自动解压war包。

IntelliJ IDEA Spring Boot(9)打成war包

然后地址栏访问。

IntelliJ IDEA Spring Boot(9)打成war包
此时访问需要加上部署的项目文件夹,除非你拷贝到ROOT目录。IntelliJ IDEA Spring Boot(9)打成war包

这是war包里面的结构,里面也是有 springboot存在的影子的。

那么两种打包方式就介绍到这。