找回密码
 立即注册
查看: 360|回复: 0

GRPC-Protobuf报错Could not find artifact com.google.protobuf:protoc:exe:${os.detec

[复制链接]
发表于 2022-1-25 17:17 | 显示全部楼层 |阅读模式
问题背景

在使用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: 鲜嫩的 小时候

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-5-14 09:27 , Processed in 0.139809 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表