<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
微服务项目手动打成jar包
微服务项目手动打包jar运行,并在Linus上运行
1、项目结构,打包准备
如图所示,需要把所有顶层模块的打包方式都设置成pom,所有需要打包的子模块的打包方式都改为jar,
很关键的一步:
在需要打包,并且有SpringBootApplication注解标注主类的子模块中的pom文件中加入:
<build>
<!--maven的打包插件-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
为了读取到mapper中的内容,需要在父项目中加入以下配置:
<!-- 项目打包时会将java目录中的*.xml文件也进行打包 -->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
最后,项目的目录如下
总工程的:
<modules>
<module>service</module>
<module>common</module>
<module>infrastructure</module>
</modules>
service中的:
<modules>
<module>service_ucenter</module>
<module>service_device</module>
<module>service_oss</module>
</modules>
infrastructure中的:
<modules>
<module>api_gateway</module>
</modules>
common中的:
<modules>
<module>service_base</module>
<module>service_util</module>
</modules>
2、打包流程
1、先对总工程进行clean和install
如果遇到问题,可能是相互依赖的关系,比如某个模块直接引入了common依赖,但是common是父模块,没有jar包,所以把依赖改成common下的每个子模块即可。
2、再对总工程下的每个父模块进行clean和package
顶层模块的打包顺序为:common ==> infrastructure ==> service
至此,每个子模块的jar包都会出现在target目录下。
可以进入到本地的maven仓库中进行查看
3、部署(安装完java,maven,mysql等环境)
配置环境,见《项目部署》
需要将每个项目的配置文件放到jar包的同一目录下,这样才可以找到配置文件。否则会报错,配置文件不起作用。
Linux 运行jar包命令如下:
方式一
java -jar service_device-0.0.1-SNAPSHOT.jar
特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
那如何让窗口不锁定?
方式二
java -jar shareniu.jar &
&代表在后台运行。
特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。
继续改进,如何让窗口关闭时,程序仍然运行?
方式三,一般使用这种方式
nohup java -jar shareniu.jar &
nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。
方式四
nohup java -jar shareniu.jar >/dev/null &
1
解释下 >temp.txt
command >out.file
command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。
可通过jobs命令查看后台运行任务
jobs
那么就会列出所有后台执行的作业,并且每个作业前面都有个编号。
如果想将某个作业调回前台控制,只需要 fg + 编号即可。
查看某端口占用的线程的pid
在这里插入代码片
netstat -nlp |grep :9181
le文件中。
可通过jobs命令查看后台运行任务
jobs
那么就会列出所有后台执行的作业,并且每个作业前面都有个编号。
如果想将某个作业调回前台控制,只需要 fg + 编号即可。
查看某端口占用的线程的pid
netstat -nlp |grep :9181
Maven 打包时丢失properties文件
解决方式:pom.xml中加入resources配置
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>