项目写好之后需要部署上线,这时候就需要把项目打包出来了,一个SpringBoot+Maven的项目应该如何打包呢?接下来详细介绍jar包和war包应该如何导出的方法。
一、jar包打包方法
1、先确定目前的项目是否为jar包的形式,一般新建SpringBoot项目都是默认选jar包的,点击pom.xml文件即可查看,有些项目可能会没有这行代码,因为默认就是jar包形式的。
<packaging>jar</packaging>
2、点击右边侧栏的Maven菜单,找到目前的项目,点开Lifecycle,分别双击clean,compile,package,三步操作都要提示BUILD SUCCESS
3、这时候就打包成功了,点开左侧项目的target即可看到jar包了,可以直接复制出来使用。
4、测试一下包,因为SpringBoot是内置Tomcat的,所以jar包直接运行就可以了,我这里复制出来放D盘并且改名为hello.jar,然后直接在当前目录按住Shift键+右键打开命令窗口,在命令行输入:java -jar hello.jar ,然后打开地址localhost:8080/hello验证代码,端口没改动的就是默认的8080,能读到代码的返回内容,说明打包是没有问题的。
二、war包打包方法
1、同样,先确定目前的项目是否为war包的形式,点击pom.xml文件即可查看,更改为war。
<packaging>war</packaging>
2、因为war包是需要外部Tomcat来部署的,所以SpringBoot内置的Tomcat依赖就用不上了,需要添加一个依赖说明,把内置Tomcat排除。
<!-- 排除内置tomcat容器,导出成war包可以让外部容器运行spring-boot项目--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <!-- provided表明该包只在编译和测试的时候用 --> <scope>provided</scope> </dependency>
3、修改启动类,并重写启动方法。这里可以直接修改启动类,其实也可以在同级目录下新建一个ServletInitializer类,二选一,推荐第二种方法,因为需要打jar包时你也要把启动类重新改回来,而把ServletInitializer类删了更方便。
@SpringBootApplication public class HelloApplication extends SpringBootServletInitializer{ /* * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法 */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(HelloApplication.class); } public static void main(String[] args) { SpringApplication.run(HelloApplication.class, args); } }
/* * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法 */ public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(HelloApplication.class); } }
4、打包,方式同上面一样,点击右边侧栏的Maven菜单,找到目前的项目,点开Lifecycle,分别双击clean,compile,package,三步操作都要提示BUILD SUCCESS
5、这时候就打包成功了,点开左侧项目的target即可看到war包了,直接复制出来使用。
6、下载一个Tomcat测试一下,把war包复制到Tomcatd的webapps目录下即可,然后运行一下Tomcat,双击Tomcat目录下的bin/startup.bat运行Tomcat
7、访问localhost:8080/hello/hello,这里注意要加上项目名,既http://localhost:[端口号]/[打包项目名]/,测试正常。
三、命令行打包
1、看到这里可能会有个疑问,一定要在IDEA里才可以打包吗?答案肯定不是的,也可以在外面文件管理器打包,方法也很简单,打开对应项目的根目录(即包含pom.xml的目录),按住Shift+右键,打开命令行窗口。
2、输入打包命令mvn clean package ,提示 BUILD SUCCESS即可。
3、然后在target目录就可以看到生成的包了,jar包或者war包都可以用这种方法,前提是符合上面的配置要求。
四、其他问题
1、打包的名字可以由自己定吗?
答:可以,在pom.xml文件的下的<build></build>之间添加一行代码即可,之后打包的就是你设置的名字。
<finalName>www.qianjiyu.com</finalName>
2、运行包之后,访问不了
答:如果项目是没有问题的,一般出现这种问题的可能缺少对应的依赖,比如有些项目需要添加servlet-api依赖、JSP支持等,还有SpringBoot的版本问题等。