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,因此構建可以跳過它。要跳過,請建立檔案
grpc-java 的某些部分依賴於 Android。由於許多 Java 開發人員沒有安裝 Android SDK,也不需要執行或修改 Android 元件,因此構建可以跳過它。要跳過,請建立檔案
在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。