新建Maven项目

新建一个 Maven 项目:

  • 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: 分类

项目名称:

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

 

导入 gRPC 对应包依赖

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

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

导入 proto 插件

 

导入 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插件命令。

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

[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

Maven项目中,编译proto文件成Java类的更多相关文章

  1. 使用maven项目 转XSD、 WSDL 成Java类

    因为项目需要,在网上查找了很多WSDL的使用方式,但是感觉不是特别顺利.现在是利用Maven 项目快速转化的方法. 首先建立一个maven 项目 ,并将下面的pom文件复制进去. <projec ...

  2. maven项目中没有resource文件夹的问题

    之前使用eclipse创建maven项目,文件夹都是建好的,这几次创建,都没有resource文件夹,需要手动创建resource. 现象描述 在eclipse中,创建maven项目有两种方式: 一种 ...

  3. 解决Maven项目中pom.xml文件报错(Failure to transfer....)的问题

    打开pom.xml文件,查看错误,如果错误类型为:Failure to transfer.........之类的,则表明你的pom中依赖的jar包没有完全下载. 解决方法:找到你本地的maven仓库, ...

  4. 关于:maven项目中pom.xml文件添加依赖无法自动搜索的问题

    用的是eclipse 1.Window------>Show View------->Maven Repositories(这个选项一般不直接显示,而在others里面) 2.操作完毕后会 ...

  5. maven项目中利用jmeter-maven-plugin插件直接执行jmeter jmx脚本

    jmeter脚本需要执行脚本,先得下载jmeter并解压jmeter.如想在maven项目中通过mvn install 直接执行jmx文件,这样就能在测试服务器上通过一个命令就能执行下性能测试了,给自 ...

  6. IDEA的maven项目中 静态文件编译的问题

    IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉. 如果使用的是Eclipse,Eclipse的src目录下的xml等资源 ...

  7. IDEA的maven项目中静态文件编译的路径问题(未测试)

    转自:http://www.cnblogs.com/signheart/p/6625126.html IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块打包进clas ...

  8. Java项目和maven项目中如何获取&设置配置文件中的属性

    通常情况下,我们会在一些配置文件文件中配置一些属性.如: indexPath = E\:\\Tomcat_7.0\\webapps\\ipost_stage\\lucene\\index imgUpl ...

  9. maven项目中的报错问题——Dynamic Web Module 3.0 requires Java 1.6 or newer.

    转自:http://www.cnblogs.com/beppezhang/p/5919221.html maven项目中的报错问题——Dynamic Web Module 3.0 requires J ...

随机推荐

  1. JS-unicode编码转换

    JS-unicode编码转换 <script type="text/Javascript"> var toUN = { on: function(str) { var ...

  2. Html下拉框的定义以及JS、Jquary取值、添加和移除

    现在有一id=test的下拉框,怎么拿到选中的那个值呢? 分别使用javascript原生的方法和jquery方法 <select id="test"  name=" ...

  3. jquery点击改变class并toggle

    <html> <head> <meta charset="utf-8"> <title></title> <scr ...

  4. 转:GBDT(MART) 迭代决策树入门教程 | 简介

    在网上看到一篇对从代码层面理解gbdt比较好的文章,转载记录一下: GBDT(Gradient Boosting Decision Tree) 又 叫 MART(Multiple Additive R ...

  5. C++11中的Lambda表达式

    原文地址:C++中的Lambda表达式 作者:果冻想 一直都在提醒自己,我是搞C++的:但是当C++11出来这么长时间了,我却没有跟着队伍走,发现很对不起自己的身份,也还好,发现自己也有段时间没有写C ...

  6. Linux环境下vsftpd参数配置

    很久之前就用过vsftpd,但总是忘了参数该如何配置,今天特地有搜索了一遍,把配置方法整理如下: (1)检查是否已安装vsftpd #rpm -qa | grep vsftpd vsftpd--.el ...

  7. 51nod1369 无穷印章

    有一个印章,其完全由线段构成.这些线段的线足够细可以忽略其宽度,就像数学上对线的定义一样,它们没有面积.现在给你一张巨大的白纸(10亿x10亿大小的纸,虽然这个纸很大,但是它的面积毕竟还是有限的),你 ...

  8. Django的列表反序

    Django虽然是python的web框架,但它不是所有的python特性都支持的. 最近在项目中遇到一个问题,需要在Django中将获得的列表反序排列,一开始我使用的是python的reverse方 ...

  9. 解读Nodejs多核处理模块cluster

    来源: http://blog.fens.me/nodejs-core-cluster/ 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发. ...

  10. Linux下Wi-Fi的实现:wireless_tools和wpa_supplicant

    平台为hi35XX,在Liunx下借助wireless_tools和wpa_supplicant(因为现在的无线WIFI网络大多是wpa加密.所以需要移植wpa_supplicant工具)等工具实现w ...