GRPC-Protobuf报错Could not find artifact com.google.protobuf:protoc:exe:${os.detec
问题背景在使用GRPC插件protobuf的时候,complie编译时出现以下错误:
Could not find artifact com.google.protobuf:protoc:exe:${os.detected.classifier}:3.12.0 in central (https://repo.maven.apache.org/maven2)
解决方案
1 在pom文件的build标签添加,少了这个排除就会出现这样的错误
<extensions> <extension> <groupId>kr.motd.maven</groupId> <artifactId>os-maven-plugin</artifactId> <version>1.6.2</version> </extension></extensions>
2 GRPC整个pom文件,不要少了依赖,全部使用这个应该是没有问题的
<?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>a.b.c</groupId> <artifactId>grpc-demo</artifactId> <version>1.0-SNAPSHOT</version> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <grpc.version>1.34.1</grpc.version><!-- CURRENT_GRPC_VERSION --> <protobuf.version>3.12.0</protobuf.version> <protoc.version>3.12.0</protoc.version> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-bom</artifactId> <version>${grpc.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!--grpc和protobuf依赖--> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty-shaded</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-protobuf</artifactId> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-stub</artifactId> </dependency> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java-util</artifactId> <version>${protobuf.version}</version> </dependency> </dependencies> <build> <extensions> <extension> <groupId>kr.motd.maven</groupId> <artifactId>os-maven-plugin</artifactId> <version>1.6.2</version> </extension> </extensions> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> <plugin> <!--protobuf插件--> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf-maven-plugin</artifactId> <version>0.6.1</version> <configuration> <protocArtifact>com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier}</protocArtifact> <pluginId>grpc-java</pluginId> <pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact> <!--proto文件存放的位置,使用protobuf才能找到--> <protoSourceRoot>src/main/resources/proto</protoSourceRoot> <!--通过插件生成的协议代码存放地址--> <outputDirectory>${basedir}/src/main/java</outputDirectory> <!--如果放在src下面,一定要false,不然你的代码都没了,输出放在resources就没关系--> <clearOutputDirectory>false</clearOutputDirectory> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>compile-custom</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build></project>总结
依赖兼容是一个大问题,同样的jar包,但是版本号不同,里面的一些类和注解也有变化,导致不兼容
作为程序员第 33 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha ...
# Lyric: 鲜嫩的 小时候
页:
[1]