SpringBoot学习笔记(10)-使用Gradle和Maven将项目打包


环境:IntelliJ idea + SpringBoot2.0 + gradle4.8 (maven)+ tomcat8
由于SpringBoot程序内部集成了tomcat,故官方推荐开发者将项目打成jar包,并且用java -jar xx.jar运行项目;但是在实际开发中,开发者仍习惯将web项目打为war包并部署到服务器tomcat中,方便启动和监控项目的情况。

更多关于SpringBoot的总结请点击:SpringBoot使用总结


一、使用Gradle打War包运行

1.1、修改build.gradle
//表示打包方式为war
apply plugin: 'war'

//排除SpringBoot内置的tomcat
providedCompile("org.springframework.boot:spring-boot-starter-tomcat")

1.2、继承SpringBootServletInitializer

在SpringBoot的启动类上继承SpringBootServletInitializer并且重写configure方法,让SpringBoot在启动时启动Servlet3.0,并以此为入口

@SpringBootApplication
@MapperScan("com.iteason.springboot_mybatis2.mapper")
@EnableTransactionManagement
public class SpringbootMybatis2Application extends SpringBootServletInitializer{
    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatis2Application.class, args);
    }

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

1.3、使用gradle打war包

在项目路径中调用命令行,执行gradle build命令,即可在libs中找到该war包


1.4、部署错误

将war包移动到tomcat的webapps中并启动tomcat进行部署,出现以下错误:

严重: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/test]]
...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultValidator' defined in class path resource 
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.validation.beanvalidation.LocalValidatorFactoryBean]: Factory method 'defaultValidator' threw exception; nested exception is java.lang.NoClassDefFoundError: javax/el/ELManager
...

这个问题产生的原因是使用了低于tomcat8版本的tomcat部署,而SpringBoot默认是以tomcat8进行部署的,所以会报错,下载新版本tomcat即可解决该问题。

二、使用Gradle打Jar包

若需要打Jar包,则不需要前面几步的配置,而只需要使用命令gradle build即可打出Jar包了。

三、使用Maven打War包

3.1、修改pom.xml
				<properties>
					<!-- 打包方式为Jar包 --!>
					<packaging>war</packaging>
				</properties>
			
			   <plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
	
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			  </plugin>
			  
			<dependency>
			<!-- 将SpringBoot自带的tomcat依赖设置成为由开发者提供 --!>
			    <groupId>org.springframework.boot</groupId>
			    <artifactId>spring-boot-starter-tomcat</artifactId>
			    <scope>provided</scope>
			</dependency>
3.2、修改启动类

启动类需要继承SpringBootServletInitializer并重写configure方法

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

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

四、使用Maven打Jar包

4.1、修改pom.xml
				<properties>
					<!-- 打包方式为Jar包 --!>
					<packaging>jar</packaging>
				</properties>
			
			   <plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<!-- 配置启动类位置--!>
					<mainClass>com.example.springboot_mybatis_test.SpringbootMybatisTestApplication</mainClass>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			  </plugin>
4.2、进入项目中,调用命令行

打包前清理target并且打包:
mvn clean package
之后将在项目的target目录下得到可运行的jar包,运行jar包的方式:
java -jar xxxx.jar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoringRong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值