微服务项目手动打成jar包

本文详细介绍了如何手动打包微服务项目,包括设置各模块打包方式、添加Spring Boot插件确保正确打包,以及处理资源文件。接着,文章阐述了打包流程,强调了模块依赖的处理和打包顺序。在Linux部署部分,讲解了不同方式运行jar包,包括nohup命令用于在后台持久运行程序,并讨论了输出重定向和后台任务管理。此外,还提供了检查端口占用的方法。
摘要由CSDN通过智能技术生成

微服务项目手动打包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
微服务是一种架构风格,将一个大型应用程序拆分成多个小型的、独立的服务单元,每个服务单元可以独立开发、部署和维护。将微服务项目打成多个jar包可以更好地实现服务的解耦和独立部署。 首先,将微服务项目按照功能划分成多个模块或服务单元,每个模块独立开发,并打包成可执行的jar包。 然后,可以通过使用依赖管理工具(如Maven或Gradle)来管理这些jar包之间的依赖关系。在项目的pom.xml(或build.gradle)文件中,将其他模块作为依赖引入,指定每个模块的groupId、artifactId和版本号等信息。 当使用这些jar包时,可以通过引入对应的模块来调用其提供的服务。在代码中使用import语句引入对应的类、接口或组件,并进行调用。 此外,为了能够正确地运行这些jar包,还需要在项目中配置相关的环境信息。例如,需要配置各个服务单元的端口号、数据库连接等信息。可以通过配置文件来统一管理这些环境变量,并在项目启动时读取并注入到对应的模块中。 为了部署这些jar包,可以将它们分布在不同的服务器上,每个服务单元独立运行。可以使用一些工具来管理和监控这些微服务,例如Docker、Kubernetes等。 在实际部署和运行时,可以通过命令行或脚本来启动每个jar包,保证每个服务单元独立运行。可以使用一些工具(如Nginx)来实现服务的负载均衡和流量转发,提高系统的可用性和性能。 总之,将微服务项目打成多个jar包可以更好地实现服务的独立部署和维护。通过合理的依赖管理和配置,可以使多个服务单元之间实现解耦,提高系统的灵活性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值