redhat9i 发表于 2022-1-25 17:17

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]
查看完整版本: GRPC-Protobuf报错Could not find artifact com.google.protobuf:protoc:exe:${os.detec