用IDEA新建Spring工程时会有选项选择打包成jar或者是war包,其实项目打包还有一种ear包,三者其实都是压缩包,区别在于压缩了什么内容。具体可以看这里:jar、war、ear打包的异同。
一、打包成jar发布
Spring Boot默认打包成jar的时候,运行Application是使用内嵌的Tomcat服务器的,免去了复杂的配置过程,所以在新工程里只写了个Controller就能运行起来并且可以被访问。打包成jar,部署的时候也可以直接通过
java -jar xxx.jar
运行应用,或者通过
nohup java -jar xxx.jar &
让应用在后台运行,不打印信息,这种情况下要想结束进程我一般的做法是:
#查找端口号(如8080)对应的进程号,如为45500
lsof -i :8080
#杀死进程
kill -9 45500
二、打包成war发布
使用jar包方便是方便,但是不适于部署包含前后端Web应用的项目,比如网站;有些情况下必须要使用外部的Tomcat服务器。
这时就需要新建基于war的工程,或者把jar改成war,怎么改呢?
2.1 修改pom.xml
2.1.1 将packaging打包方式改成war
<packaging>war</packaging>
2.1.2 添加外部tomcat的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
2.2 修改Application
//@SpringBootApplication
//public class DemoApplication {
//
// public static void main(String[] args) {
// SpringApplication.run(DemoApplication.class, args);
// }
//}
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
2.3 部署
打包成war后,将target目录下的war包复制到tomcat服务器下面的webapps目录下,启动/重启tomcat,tomcat会自动解压war,这时便可以访问应用了。值得注意的是,访问路径要加下war包的名字,比如jar包访问时为:localhost:8080/sayHi,war包名为demo.war,那此时的访问路径应为:localhost:8080/demo/sayHi。
网友评论