导航

Maven项目中,编译proto文件成Java类

Posted on 2016-04-14 15:14  蝈蝈俊  阅读(18251)  评论(0编辑  收藏  举报

新建Maven项目

新建一个 Maven 项目:

image

  • pom定义了最小的maven2元素,即:groupId,artifactId,version。
  • groupId:项目或者组织的唯一标志,并且配置时生成的路径也是由此生成,如org.codehaus.mojo生成的相对路径为:/org/codehaus/mojo
  • artifactId: 项目的通用名称
  • version:项目的版本
  • packaging: 打包的机制,如pom, jar, maven-plugin, ejb, war, ear, rar, par
  • classifier: 分类

image

项目名称:

image

我们新建的空白 Maven 项目结构如下:

image

 

导入 gRPC 对应包依赖

对Maven 项目来说,在 pom.xml 文件中需要增加对应 jar

<dependency>
  <groupId>io.grpc</groupId>
  <artifactId>grpc-all</artifactId>
  <version>0.13.2</version>
</dependency>

导入 proto 插件

image

 

导入 Maven protobuf 插件

protobuf-maven-plugin:

https://www.xolstice.org/protobuf-maven-plugin/

修改 pom.xml 文件,增加下面节:

<build>
    <extensions>
        <extension>
            <groupId>kr.motd.maven</groupId>
            <artifactId>os-maven-plugin</artifactId>
            <version>1.4.1.Final</version>
        </extension>
    </extensions>
    <plugins>
        <plugin>
            <groupId>org.xolstice.maven.plugins</groupId>
            <artifactId>protobuf-maven-plugin</artifactId>
            <version>0.5.0</version>
            <configuration>
                <!--
                  The version of protoc must match protobuf-java. If you don't depend on
                  protobuf-java directly, you will be transitively depending on the
                  protobuf-java version that grpc depends on.
                -->
                <protocArtifact>com.google.protobuf:protoc:3.0.0-beta-2:exe:${os.detected.classifier}</protocArtifact>
                <pluginId>grpc-java</pluginId>
                <pluginArtifact>io.grpc:protoc-gen-grpc-java:0.13.2:exe:${os.detected.classifier}</pluginArtifact>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>compile-custom</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
执行Maven插件命令。

在输出命令中,我们可以看到编译后的输出。

image

[INFO] --- protobuf-maven-plugin:0.5.0:compile (default-cli) @ myTestMaven ---
[INFO] Compiling 2 proto file(s) to /Users/ghj1976/project/mystudy/Demo1/target/generated-sources/protobuf/java

 

 

参考: https://github.com/grpc/grpc-java/blob/master/README.md