grpc-java 源码环境的构建坑比较多,翻了很多博客,也没有详细的步骤,但源码都构建不起来,怎能学透彻。
1. Clone
1.1 git clone https://github.com/grpc/grpc-java.git
1.2 idea 打开grpc-java工程
2.compile
2.1 java version
java 版本需要 1.8 以上
2.2 gradle.properties
grpc-java 有一个用于 protoc 的 C++ 代码生成插件。由于许多 Java 开发人员没有安装 C 编译器,也不需要运行或修改 codegen,因此构建可以跳过它。要跳过,请创建文件
/gradle.properties并添加skipCodegen=true.
grpc-java 的某些部分依赖于 Android。由于许多 Java 开发人员没有安装 Android SDK,也不需要运行或修改 Android 组件,因此构建可以跳过它。要跳过,请创建文件
/gradle.properties并添加skipAndroid=true.
在grpc-java的根目录下新建一个gradle.properties 文件。
2.3 gradle
运行 $ ./gradlew build
构建 grpc-java。
运行:$ ./gradlew publishToMavenLocal
将依赖安装到 Maven 本地仓库中。
3. Build examples
运行 $ ./gradlew build
构建 grpc-java/examples。
Execution failed for task ':generateProto'. > Could not resolve all files for configuration ':protobufToolsLocator_grpc'. > Could not find io.grpc:protoc-gen-grpc-java:1.46.1-SNAPSHOT.
对于这个问题,主要是因为io.grpc:protoc-gen-grpc-java:1.46.1-SNAPSHOT. 这个jar没有生成,在我们本地的仓库中没找到。打包生成的方式,我还没找到。
一个取巧的解决方法是将example/build.gradle中的这个SNAPSHOT版本号替换成已有的正式版本。
正式版本: https://repo1.maven.org/maven2/io/grpc/protoc-gen-grpc-java/
从中找到跟你项目的grpcVersion 接近的正式版本。
grpc { artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" } 将${grpcVersion} 替换成你跟SNAPSHOT版本相近的正式版本。 如:grpc { artifact = "io.grpc:protoc-gen-grpc-java:1.46.0" }
然后再重新运行 $ ./gradlew build
构建 grpc-java/examples。