mac编译grpc-java 生成插件

本文介绍如何使用Homebrew安装protobuf,并从源代码编译指定版本。此外,还提供了编译grpc-java插件的方法及使用该插件生成Java代码的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装 protobuf

brew install autoconf automake libtool
git clone https://github.com/google/protobuf.git
cd protobuf
git checkout v3.5.0
sh ./autogen.sh
./configure --prefix=/usr/local/protobuf/  
sudo make && make install

编译插件

wget https://github.com/grpc/grpc-java/archive/v1.7.1.tar.gz
tar zxvf grpc-java-1.7.1.tar.gz
cd grpc-java/compiler
export CXXFLAGS="-I/usr/local/protobuf/include" LDFLAGS="-L/usr/local/protobuf/lib"
../gradlew java_pluginExecutable
protoc-gen-grpc-java就在build/exe/java_plugin下

使用方法

protoc --plugin=protoc-gen-grpc-java=build/exe/java_plugin/protoc-gen-grpc-java \
  --grpc-java_out="$OUTPUT_FILE" --proto_path="$DIR_OF_PROTO_FILE" "$PROTO_FILE"

比如

protoc --java_out=./src/main/java --plugin=protoc-gen-grpc-java=/Users/diyai/github/grpc-java-1.7.1/compiler/build/exe/java_plugin/protoc-gen-grpc-java --grpc-java_out=./src/main/java ./src/main/java/com/ctu/crackcaptcha/classification_service.proto

生成的文件
自动生成的文件清单


参考资料
https://github.com/grpc/grpc-java/blob/master/COMPILING.md

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.rain4cloud</groupId> <version>1.0-SNAPSHOT</version> <artifactId>grpc-api</artifactId> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 这里不需要手动设置 os.detected.classifier,插件会自动检测 --> <!--<os.detected.classifier>windows-x86_64</os.detected.classifier>--> <!--mac M暂未兼容,使用x86--> <os.detected.classifier>osx-x86_64</os.detected.classifier> <protobuf-maven-plugin.version>0.6.1</protobuf-maven-plugin.version> <protoc.version>3.25.3</protoc.version> <protobuf.java.version>3.25.3</protobuf.java.version> <grpc-java.version>1.70.0</grpc-java.version> </properties> <dependencies> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-stub</artifactId> <version>1.70.0</version> <exclusions> <exclusion> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-protobuf</artifactId> <version>1.70.0</version> <exclusions> <exclusion> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-api</artifactId> <version>1.70.0</version> </dependency> <!-- javax.annotation API --> <!-- <dependency>--> <!-- <groupId>javax.annotation</groupId>--> <!-- <artifactId>javax.annotation-api</artifactId>--> <!-- <version>1.3.2</version> <!– 使用最新版本或适合你项目的版本 –>--> <!-- </dependency>--> <!----> <dependency> <groupId>jakarta.annotation</groupId> <artifactId>jakarta.annotation-api</artifactId> <version>3.0.0</version> </dependency> </dependencies> <build> <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.25.3:exe:${os.detected.classifier}</protocArtifact> <pluginId>grpc-java</pluginId> <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.70.0:exe:${os.detected.classifier}</pluginArtifact> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>compile-custom</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>com.google.code.maven-replacer-plugin</groupId> <artifactId>replacer</artifactId> <version>1.5.3</version> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>replace</goal> </goals> </execution> </executions> <configuration> <includes> <include>**/*.java</include> </includes> <replacements> <replacement> <token>javax.annotation.Generated</token> <value>jakarta.annotation.Generated</value> </replacement> </replacements> </configuration> </plugin> </plugins> </build> </project>
最新发布
07-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值