dubbo简单使用(三)

这里将上两例(生产和消费)优化一下,新建一个父maven模块,让生产和消费依赖父模块,目的一是去掉重复代码,例如DemoProviderService接口;目的二是让父模块的pom来统一管理版本。

如果使用的是eclipse,只要在同一工作空间项目之间就可以依赖,笔者使用的是idea,需要新建module(模块),步骤如下:

1,新建一个maven项目做父模块

2,如图,根据提示,添加新的模块


注:百度网上有直接将其他项目添加为module的,但笔者实验都出现两种错误,一:子模块的pom文件扫描不到;二:在maven project界面整个子模块为灰色,不可用。各位geek若有解决办法,望告知。

3,新建java和resource,将之前的文件复制进来,如图:


4,给生产模块和消费模块的pom文件添加项目依赖,然后删除各自模块的接口,笔者的父依赖如下:


5,给父模块添加需要消费的接口,这样就完成了目的一


6,抽取子模块的pom内容,在父模块pom里定义和版本管理,如下:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>gccDubbo</groupId>
  <artifactId>gccDubbo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <modules>
    <module>gccDubboProvider</module>
    <module>gccDubboConsumer</module>
  </modules>
  <packaging>pom</packaging>
  <name>gccDubbo Maven Webapp</name>

  <!-- 依赖版本管理  -->
  <properties>
    <dubbo-demo-api.version>0.0.1-SNAPSHOT</dubbo-demo-api.version>
    <dubbo.version>2.6.0</dubbo.version>
    <zkclient.version>0.10</zkclient.version>
    <curator-framework.version>4.0.1</curator-framework.version>
    <fastjson.version>1.2.46</fastjson.version>
    <log4j.version>1.2.17</log4j.version>
    <slf4j-api.version>1.7.25</slf4j-api.version>
    <commons-lang3.version>3.4</commons-lang3.version>
    <netty-all.version>4.0.35.Final</netty-all.version>
  </properties>

  <!-- 依赖管理 仅仅定义 -->
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <version>${dubbo.version}</version>
      </dependency>
      <dependency>
        <groupId>com.101tec</groupId>
        <artifactId>zkclient</artifactId>
        <version>${zkclient.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-framework</artifactId>
        <version>${curator-framework.version}</version>
      </dependency>
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>${fastjson.version}</version>
      </dependency>
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j-api.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${commons-lang3.version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-all</artifactId>
        <version>${netty-all.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

</project>

7,去掉两个子模块的版本,并定义parent依赖,例如:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>gccDubbo</groupId>
        <artifactId>gccDubbo</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <artifactId>gccDubboProvider</artifactId>
    <name>gccDubboProvider Maven Webapp</name>

    <dependencies>
        <dependency>
            <groupId>gccDubbo</groupId>
            <artifactId>gccDubbo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
        </dependency>
    </dependencies>
</project>

这样就达到了目的二,版本在父模块的pom同一管理。

这样管理以后,如果有新服务添加,只需要在父模块添加接口,在生产模块完成实现,在消费模块调用即可,不会有代码冗余。

猜你喜欢

转载自blog.csdn.net/gcc_java/article/details/80003732
今日推荐