在使用springboot这项技术时,我们创建的项目都是以jar的形式进行的,最近偶尔想到了如何换下启动方式,所以这篇文章就出来了。
接下来我们按照下面的步骤一步一步来看下如何使用war包的形式进行项目的发布和部署的吧。
首先我们使用的工具是idea,java版本使用的1.8,下面我们按照图片的教程一步一步去整理我们需要的内容咯。
下面的步骤就是一步一步进行项目的创建过程了,比较容易理解,跟着教程就可以了,过多的内容讲述就省略了。
Tips:记得让自己的电脑可以连上网络,不然无法创建下面的项目流程了。
上面我们进行标注这是一个war包形式,这里注意不要勾选错了。
勾选上面需要的内容,点击下面的下一步,接着完成,这个项目就创建完成了,然后我们继续看下下面如何创建了。
下面我们打开我们的pom文件,发现我们的打包方式现在是war的形式了。
我们需要在我们的主程序中进行下面的信息配置。
package com.wpw.springbootwar;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
//下面SpringBootServletInitializer ,idea快捷键 ctrl+o可以选择对应的方法
public class SpringbootWarApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SpringbootWarApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(SpringbootWarApplication.class, args);
}
}
上面的方法已经注释了如何进行对应方法的实现和配置,希望你可以知道。写到这了,我们为了可以在页面上进行直观的看出效果,我们自定义一个controller然后里面进行返回一条很简单的信息进行测试。
package com.wpw.springbootwar;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 微信公众号~后端Coder
*/
@RestController
public class UserController {
@GetMapping(value = "/hello")
public String hello() {
return "hello backCoder";
}
}
在上面的示例程序中,我们自定义一个controller用于测试,很简单的一条信息返回。
这里我们为了我们接下来的打包名称比较简洁,也就是我们自定义的打包名称,我们需要在pom文件里面进行如下配置。
<build>
<finalName>hello-war</finalName>//这句就是我们可以进行自定义打包名称的位置
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
好了,我们为了可以很方便的进行打包,我们还是采用了idea上面的打包工具好了,命令也可以。
双击上面的package就可以打包了,然后我们看到我们的控制台出现了下面的success信息就表示我们成功了。
[INFO] Building war: D:\springboot-war\target\hello-war.war
[INFO]
[INFO] --- spring-boot-maven-plugin:2.2.1.RELEASE:repackage (repackage) @ springboot-war ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
其实在上面我们可以看到我们打的包放在的位置就是target目录下面,我们找到就可以了。
为了我们看下我们打包是否正确我需要将war包上传到自己的服务器的tomcat进行部署下。
这次我们可以使用到了我们上次文章发布的docker容器化技术搭建的tomcat环境了。
我们看到我们的tomcat服务器还是在运行的,这次我们将自己的war包进行在tomcat进行部署了。关于文件如何上传到自己的服务器,推荐winScp工具进行上传,关于如何使用工具请自行搜索。
好了,现在我已经将自己的war包上传到自己的服务器了,接下来我们将war包拷贝到我们的tomcat这样的web容器里面进行启动即可。
关于如何将本地的war包拷贝到容器对应的目录里面,我们可以按照下面的命令进行操作即可。
首先我们使用下面的命令查看自己tomcat容器的容器id
docker ps | grep tomcat
然后我们使用下面的命令进行进入到容器里面,主要是看下webapps目录的路径是什么,其目的就是将自己的war包放入到这个路径下面。
docker exec -it tomcat容器id bash
进入之后我们ls,可以发现webapps目录,然后 cd webapps目录里面,然后pwd一下就可以找到webapps目录的绝对路径了,下面的路径是自己的。
/usr/local/tomcat/webapps
好了,上面的步骤完成之后,我们终于到了如何将服务的war包拷贝到容器里面这个步骤了。
docker cp hello-war.war 自己的tomcat容器id:/usr/local/tomcat/webapps
好了,我们为了正确性,看下我们的war是否已经拷贝到对应的目录了吧,再次进入容器里面进行查找了。
我们看到我们的hello-war包已经启动了,下面我们开始在我们的浏览器进行项目的访问了。
这里提示一下,tomcat的端口号默认是8080,但是自己将主机的端口10000映射为容器的8080端口上,所以我们在浏览器上访问是10000的端口,不过你们也可以根据自己的喜欢进行设定,需要了解如何设置的可以看下我之前发过的文章。
http://自己tomcat服务器所在的机器ip:10000/hello-war/hello
我们通过上面的地址进行访问,首先解析一下吧,上面的hello-war是我们的项目名称,也就是war包的名称,后面的/hello就是上面我们自定义的controller自定义的url路径。
我们看到上面的图片就是我们在示例程序中定义的信息,说明我们成功了,好了,本次需要分享的文章就到这里结束了