SpringBoot打包

本文详细介绍了如何将SpringBoot项目打包为jar和war包。对于jar包,通过配置maven打包插件并指定mainClass启动项目。war包的打包需要剔除内置Tomcat,设置packaging为war,继承SpringBootServletInitializer并覆盖configure方法。war包部署到外部Tomcat后,访问路径需包含项目名,注意文件位置和启动类配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    一. 打jar包:程序新建时采用jar形式

    1. pom文件中引入maven打包插件:

    mainmClass中指定程序的入口,只要写明启动类全称

  <build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<maimClass>com.stu.MybatisApplication</maimClass>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>

			</plugin>
		</plugins>
	</build>

    2. 选中项目右击--->Showin--->Terminal

    执行mvn clean清除target中的所有文件,然后执行mvn package,在target中会有打好的包XXXX.jar

    3. 启动cmd,切换到target文件目录下,执行 java -jar XXX.jar即可启动项目。

二. 打war包

       SpringBoot是内嵌Tomcat服务器,所以每次重新启动都是用的新的Tomcat服务器,一个tomcat中只能部署一个项目,无法做到部署多个项目;为了在一个tomcat中部署多个项目,需要使用外部tomcat。也因为每次启动项目就使用新的tomcat服务器,出现了一个问题: 
      上传到项目的文件,如果是保存在项目中的,那么重启过后文件就会丢失。比如我们上传了一个头像,重启项目后,这个头像就没了。而如果将文件保存在本地磁盘中的话,html中标签没办法获取。因此,我们才需要将SpringBoot项目打成war包,放到Tomcat中去运行。

    使用外部tomcat部署war项目的步骤如下:

1. 1 同打jar,pom中引入maven打包插件;

1.2 pom文件中加<packaging>war</packaging>,表明该项目为war项目;

1.3 web依赖中剔除自带的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>

1.4 加入临时的tomcat,以保证本地使用:

    provided表示打包时该依赖不会进入war包,以防止与外部的tomcat相冲突

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

2. 启动类:

2.1 继承SpringBootServletInitializer

2.2 覆盖configure方法,写明本启动类

	@Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(MybatisApplication.class);
    }

3. 选中项目右击--->Showin--->Terminal

    执行mvn clean清除target中的所有文件,然后执行mvn package,在target中会有打好的war包:

4.1  将该war包放在自己安装的tomcat的webapps目录下

4.2 启动tomcat,启动后,tomcat会自动解压所有没有解压的war包,并启动部署在该目录下的所有项目;

4.3 如果项目启动正常:

    访问:localhost:8080/HelloMybatis-0.0.1-SNAPSHOT/[requestMapping对应的路径,如果有参数,则带入参数]

    该路径要切记,端口号之后的不是properties中设置的context-path,而是打包后的项目名,即HelloMybatis-0.0.1-SNAPSHOT。这一点是网上很多人提问说war包部署后无法访问,一访问就是404错误的原因,很多人都是以为外部的tomcat版本和eclipse自带的tomcat不符导致的,或者其他的问题。

    如果要使部署后的项目和本地项目访问的地址相同,就需要制定打包时的war名称,插件配置如下:

<build>
        <finalName>mybatis</finalName>  <!-- properties文件中server.servlet.context-path的值 -->
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<maimClass>com.stu.MybatisApplication</maimClass>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>

			</plugin>
		</plugins>
	</build>

另外注意事项:

    (1)对于文件的位置,必须制定明确,例如classpath,file等,在本地运行时,默认从classpath中寻找文件,但是在部署到外部tomcat后,不会有默认设置,即使是classpath下的文件,也必须写上classpath,否则会报错找不到文件。

    (2)在启动类中,不要写controller层,部署到外部tomcat后,启动类中的requestMapping路径会报404错误。

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值