明天一大早要陪女朋友回老家看爸媽(算未來的岳父母...嗎?)
只好半夜趕工寫文章啦QQ
今天要開始來教大家設定maven跟環境
我使用的編譯器是intellij,java環境是1.8,如果你要用其他版本也沒有問題
首先我們先建立一個新的java專案,做出一個gRPC_file的module,之後分別要製作出server跟client兩個專案。
我們要先安裝intellij的plugin,開啟marketplace內搜尋Protocol Buffer,找這個圖示的安裝起來
然後我們開始新增maven到pom.xml當中
首先是RPC的dependency依賴內容
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
<version>1.57.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>1.57.2</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>1.57.2</version>
</dependency>
<dependency> <!-- necessary for Java 9+ -->
<groupId>org.apache.tomcat</groupId>
<artifactId>annotations-api</artifactId>
<version>6.0.53</version>
<scope>provided</scope>
</dependency>
還有下方的build也要新增,之前就是因為沒有裝build卡了好久,仔細看過後才發現要裝
<build>
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.7.1</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.6.1</version>
<configuration>
<protocArtifact>com.google.protobuf:protoc:3.22.3:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.57.2:exe:${os.detected.classifier}</pluginArtifact>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
都新增好以後讓maven重新整理一下,應該可以在maven裡面看到相關的plugins,最重要的當然就是protobuf這個plugin了
我們把他打開來看看裡面有什麼東東
我們會使用到的主要是clean跟protobuf這兩個,打開protobuf,確認一下有出現complie跟custom,表示已經安裝成功了。
那昨天有提到protobuf,什麼是protobuf呢?
其實protobuf就是Protocol Buffer,是一種輕巧、高效率的結構序列儲存資料的方式,protobuf使用二進制的儲存資料型態,跟語言、平台都沒有關係,我們通常會用.proto檔的副檔名來命名。
也因此我們需要使用protobuf這個plugin來協助我們產生對應的程式碼。
只要先在proto檔裡面定義好我們的資料型態跟method,就可以使用protobuf自動生成所需要的程式碼。
https://github.com/grpc/grpc-java
https://zhuanlan.zhihu.com/p/411315625