最近在学习NIO方面的框架Netty,在书中提到了编解码技术ProtoBuf,在实践过程中(本人已经习惯了maven构建工程),发现maven仓库中并未提供protobuf-java-3.4.0.jar文件。怎么办呢?
于是本人就开始问度娘了,多数文章都是自己编译打包。以下是我操作的记录,仅供参考。
首先,我的环境:
MacOS 10.12.6版本,安装了最新的Homebrew,java版本是1.8.0_144,mvn版本是3.5.0。
其次,下载源码:下载protobuf release版本:https://github.com/google/protobuf/releases
(我这里选在的是3.4.0最新版)
接下来,把下载下来的文件解压出来。应该是这个样子:
OK,现在把使用Homebrew安装的protobuf的可执行文件protoc拷贝到上图中的src文件夹下。
(注意:如果你翻看了github的说明,文中说的src就是指解压包中的src,而不是java目录下的src目录,切记!)
万事俱备了,只欠东风。那就开始使用maven进行编译吧。
按照https://github.com/google/protobuf/tree/master/java文中所说,进入java目录后执行命令:
mvn test
运行结果报错。继续执行命令
mvn install && mvn package
还是报错。错误主要是test文件的问题
是不是跳过测试就OK了呢?
mvn package -Dmaven.test.skip=true
运行还是报错。
TNND,戏耍我嘛~
进入java目录后,将所有的test目录下的代码删除。再运行mvn package。结果一切正常,万事大吉!
jar文件编译成功后,根据自己需要,可将该文件放到maven本地仓库中使用,或者直接在拷贝到classpath路径下使用。
以下是mvn安装命令
mvn install:install-file -Dfile=./protobuf-java-3.4.0.jar -DgroupId=com.google -DartifactId=protobuff -Dversion=3.4.0 -Dpackaging=jar