如果对maven不会用甚至不知道是什么的话,建议先看看下面几篇,看完,相信你会有所启发,并会对项目进行一个完整的依赖构建-打包测试-部署发布
- Maven系列(一)Maven的简介与使用
- Maven系列(二)无Maven不项目—使用Eclipse快速搭建Maven项目
- Maven系列(三)Maven给不同的环境打包
- Maven系列(四)Maven热部署
- Maven系列(五)CentOS7搭建最新GitLab
-
开发过javaweb项目并发布过的兄dei知道,普通的war包放到tomcat里之后,随着tomcat的启动,war包会自动解压成文件,假如程序里有调用xml资源文件(不是spring相关的配置文件),那么在程序里指定相对路径就行了,但是最近我有一个服务,我把一些账户的用户名和密码放在xml里,然后程序用到的时候直接使用xpath从文件去取就行了,这是比较常规的做法,idea直接运行咩有问题,但是当我打成jar包放在服务器上启动的时候,报错说是找不到资源文件,即程找不到我存用户名与密码的xml文件,思来想去,明白了,因为xml文件在jar包里,程序在执行的时候根本就找不到文件,因为jar包没有被解压,根据相对路径也就找不到文件(我是这么理解的,不知道对不对),这个时候我就明白了我以往的打包方式在这个服务是行不通的。这里说一下,我用的是springboot,打包的使用的是springboot提供的plugin,如下
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
一般来讲,springboot项目使用这个插件,就自动将程序和那些依赖的jar包捆绑在一起,然后通过java -jar xxx.jar
运行就OK了
再来说说maven打包的方式,整体来讲分为两大类
- 第一种就是上面说的将所有的依赖jar包、资源文件和程序捆绑在一起,比较常见;
- 第二种就是将程序和依赖的jar包和资源文件分开,比较灵活,可以自己编写一些shell脚本来启动或停止程序
各有各的好,具体的还需要视项目来定。
接下来说说第二种打包方式,我这里使用的是maven插件assembly
,自己顺便写了个linux下执行和停止的脚本,解决了上面的问题,而且使用起来很方便,下面是步骤