grpc-java原始碼環境編譯

一個字帥發表於2022-05-19

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。

大功告成,grpc-java原始碼就編譯完成了。

相關文章