美文网首页
修改jar源码打包到mvn仓库

修改jar源码打包到mvn仓库

作者: 猪猪侠来了 | 来源:发表于2020-04-02 11:05 被阅读0次

原因是 用了nacos分离开发的时候,保证网关层能自动根据ip地址,根据spring.appllication.name的应用名称注册到nacos的时候,同时带一个ip
如:spring.appllication.name为gzstrong-gateway,其注册到网关的时候服务可以是这种形式gzstrong-gateway-192.168.197.223,配置文件也是根据这一规则去获取配置

1.nacos discovery客户端

  • 修改spring-cloud-alibaba-nacos-discovery-0.2.2.RELEASE包的源码NacosDiscoveryProperties.java

NacosDiscoveryProperties.java在org.springframework.cloud.alibaba.nacos包下

@PostConstruct
    public void init() throws SocketException {

        metadata.put(PreservedMetadataKeys.REGISTER_SOURCE, "SPRING_CLOUD");
        if (secure) {
            metadata.put("secure", "true");
        }

        serverAddr = Objects.toString(serverAddr, "");
        if (serverAddr.lastIndexOf("/") != -1) {
            serverAddr = serverAddr.substring(0, serverAddr.length() - 1);
        }
        endpoint = Objects.toString(endpoint, "");
        namespace = Objects.toString(namespace, "");
        logName = Objects.toString(logName, "");

        if (StringUtils.isEmpty(ip)) {
            // traversing network interfaces if didn't specify a interface
            if (StringUtils.isEmpty(networkInterface)) {
                ip = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
            }
            else {
                NetworkInterface netInterface = NetworkInterface
                        .getByName(networkInterface);
                if (null == netInterface) {
                    throw new IllegalArgumentException(
                            "no such interface " + networkInterface);
                }

                Enumeration<InetAddress> inetAddress = netInterface.getInetAddresses();
                while (inetAddress.hasMoreElements()) {
                    InetAddress currentAddress = inetAddress.nextElement();
                    if (currentAddress instanceof Inet4Address
                            && !currentAddress.isLoopbackAddress()) {
                        ip = currentAddress.getHostAddress();
                        break;
                    }
                }

                if (StringUtils.isEmpty(ip)) {
                    throw new RuntimeException("cannot find available ip from"
                            + " network interface " + networkInterface);
                }

            }
        }
        //修改源码 用于配置中心文件根据 "spring.application.name+IP地址" 的规则
        if("true".equals(environment.getProperty("nacos.discovery.ip.suffix"))){
            this.service=this.service+"-"+this.ip;
        }
        this.overrideFromEnv(environment);
    }
  • bootstrap.properties启动文件要添加配置 nacos.discovery.ip.suffix=false
#支持后缀添加ip地址
nacos.discovery.ip.suffix=false
#支持后缀添加ip地址
nacos.config.ip.suffix=true

2.Nacos 客户端的nacos-config

NacosPropertySourceLocator.java在org.springframework.cloud.alibaba.nacos.client包下

  • 找到NacosPropertySourceLocator.java,修改源码
 @Override
    public PropertySource<?> locate(Environment env) {

        ConfigService configService = nacosConfigProperties.configServiceInstance();

        if (null == configService) {
            log.warn("no instance of config service found, can't load config from nacos");
            return null;
        }
        long timeout = nacosConfigProperties.getTimeout();
        nacosPropertySourceBuilder = new NacosPropertySourceBuilder(configService,
                timeout);
        String name = nacosConfigProperties.getName();

        String dataIdPrefix = nacosConfigProperties.getPrefix();
        if (StringUtils.isEmpty(dataIdPrefix)) {
            dataIdPrefix = name;
        }

        if (StringUtils.isEmpty(dataIdPrefix)) {
            try {
                //修改源码 用于配置中心文件根据 "spring.application.name+IP地址" 的规则
                String hostAddress = InetAddress.getLocalHost().getHostAddress();
                dataIdPrefix = env.getProperty("spring.application.name");
                if("true".equals(env.getProperty("nacos.config.ip.suffix"))){
                    dataIdPrefix = env.getProperty("spring.application.name") + "-" + hostAddress;
                    nacosConfigProperties.setPrefix(dataIdPrefix);
                }
            } catch (UnknownHostException e) {
                e.printStackTrace();
            }

        }

        CompositePropertySource composite = new CompositePropertySource(
                NACOS_PROPERTY_SOURCE_NAME);

        loadSharedConfiguration(composite);
        loadExtConfiguration(composite);
        loadApplicationConfiguration(composite, dataIdPrefix, nacosConfigProperties, env);

        return composite;
    }

  • bootstrap.properties启动文件要添加配置 nacos.config.ip.suffix=true
#支持后缀添加ip地址
nacos.discovery.ip.suffix=false
#支持后缀添加ip地址
nacos.config.ip.suffix=true

3.将这两个文件编译成class文件

QQ截图20190521104201.png

4.解压jar包,替换class

在gradle的仓库路径spring-cloud-alibaba-nacos-discovery的路径,找的spring-cloud-alibaba-nacos-discovery-0.2.2.RELEASE.jar文件,将其用好压工具解压,在org.springframework.cloud.alibaba.nacos包下删除NacosDiscoveryProperties.class,将上面编译好的class文件,放进来

5.将文件夹,整理成jar包

进入到spring-cloud-alibaba-nacos-discovery的整理目录中

jar cvf spring-cloud-alibaba-nacos-discovery-0.2.2.RELEASE.M.jar .

注意后面有当前路径. 且其中.M.jar 意思是自己定义 M代表是在原来的jar包进行修改过

同理生成spring-cloud-alibaba-nacos-config-0.2.2.RELEASE.M.jar

6.将jar包上传到nexus私服

将jar包上传到nexus私服

相关文章

  • 修改jar源码打包到mvn仓库

    原因是 用了nacos分离开发的时候,保证网关层能自动根据ip地址,根据spring.appllication.n...

  • 打包项目并添加到mavn本地仓库

    将项目打包并加入到mavn本地仓库 export-->选择jar fie -->选中文件,选择路径 ``` mvn...

  • maven

    指定配置文件打包:开发: mvn package -Pdev mvn package :打包jar包mvn ins...

  • mvn 部署、发布等

    添加项目的mvn仓库依赖 依赖包: mvn插件: mvn部署snopshot版本的jar 添加远程仓库 配置mvn...

  • mvn命令报错:unable to find valid cer

    问题 mvn仓库地址变更之后,mvn 命令报错,无法下载jar包 报错 解决 导入mvn仓库网址的https相关证...

  • mvn

    01 MVN仓库下载jar比较慢,修改设置,换一个国内的仓库就好多了。国内的仓库 02 在eclipse中,遇到了...

  • SpringBoot发布打包

    发布打包 Jar类型打包方式 1.使用mvn celan package 打包 2.使用java –jar 包名...

  • MVN 配置整理

    一:常用命令:清空:mvn clean编译:mvn compile打包:mvn package打包并安装到本地仓库...

  • Maven项目打jar包

    把所有依赖的jar包打包到build的jar包里面,实现零依赖,在 下添加,: 执行 mvn assembly:...

  • Maven项目打jar包

    把所有依赖的jar包打包到build的jar包里面,实现零依赖,在 下添加,: 执行 mvn assembly:...

网友评论

      本文标题:修改jar源码打包到mvn仓库

      本文链接:https://www.haomeiwen.com/subject/tdddzqtx.html