异构微服务远程调用如何打jar包

1.服务提供方打 jar 包

RemoteUserService.java

java 复制代码
package com.finance.system.api;

import com.finance.system.api.domain.dto.Enterprise;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import com.finance.common.core.constant.ServiceNameConstants;
import com.finance.common.core.domain.R;
import com.finance.system.api.factory.RemoteUserFallbackFactory;
import com.finance.system.api.model.LoginUser;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Map;

/**
 * 用户服务
 */
@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class)
public interface RemoteUserService
{
    /**
     * 同步公司数据
     */
    @PostMapping(value = "/company/registerEnterprise")
    public R registerEnterprise(@RequestBody Enterprise enterprise);
}
xml 复制代码
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <!-- 这里可以没有主类,作为工具包使用 -->
<!--                    <archive>-->
<!--                        <manifest>-->
<!--                            <mainClass>com.example.MainClass</mainClass>-->
<!--                        </manifest>-->
<!--                    </archive>-->
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Maven Assembly Plugin 是一个用于创建可执行的分发包的 Maven 插件。它可以将项目的依赖和资源文件打包成一个可执行的分发包,方便部署和使用。

当运行 mvn package 命令时,Maven Assembly Plugin 将会执行,并生成分发包。

完成配置后,您可以运行以下命令来生成分发包:

bash 复制代码
mvn package

生成的分发包将会位于项目的 target 目录下,后缀为 jar-with-dependencies.jar,这里是 finance-api-system-2.5.0-jar-with-dependencies.jar,里面已经包含了项目和它的所有依赖。

2.服务调用方引用 jar 包

xml 复制代码
<!-- 引用异构服务jar包 -->
<dependency>
    <groupId>com.finance</groupId>
    <artifactId>finance-api-system</artifactId>
    <version>2.5.0</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/finance-api-system-2.5.0-jar-with-dependencies.jar</systemPath>
</dependency>

调用方需扫描远程类所在路径

java 复制代码
@EnableFeignClients(basePackages = {"com.finance.system.api"})
java 复制代码
@Resource
private RemoteUserService remoteUserService;

R result = remoteUserService.registerEnterprise(enterprise);
log.info("result: {}", result);
// result: {msg=操作成功, code=200}
相关推荐
天天扭码3 小时前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
余生H3 小时前
transformer.js(三):底层架构及性能优化指南
javascript·深度学习·架构·transformer
凡人的AI工具箱3 小时前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
运维&陈同学4 小时前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列
哔哥哔特商务网17 小时前
一文探究48V新型电气架构下的汽车连接器
架构·汽车
007php00717 小时前
GoZero 上传文件File到阿里云 OSS 报错及优化方案
服务器·开发语言·数据库·python·阿里云·架构·golang
码上有前19 小时前
解析后端框架学习:从单体应用到微服务架构的进阶之路
学习·微服务·架构
gjh120821 小时前
什么是微服务?
微服务