微服务项目手动打成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  &  

解释下 >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
  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值