本地编译运行nacos,当前环境:
| 组件 | 版本 |
|---|---|
| nacos | 1.4.1 |
| os | Macos12.5.1 m1 pro |
| idea | 2022.3 |
| maven | 3.8.7 |
前期准备工作,可以参考 0101nacos本地编译运行-nacos-微服务架构,软件替换为macos版本即可
在clean install的时候,报错如下提示:
Could not find artifact com.google.protobuf:protoc:exe:osx-aarch_64:3.8.0 in alimaven (http://maven.aliyun.com/nexus/content/repositories/central)
[ERROR] Failed to execute goal org.xolstice.maven.plugins:protobuf-maven-plugin:0.5.0:compile (default) on project nacos-consistency: Missing:
简单翻译就是在编译nacos-consistency模块时候,在maven仓库中找不到com.google.protobuf:protoc:osx-aarch_64:3.8.0
如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0jRrAWL1-1679457173840)(/Users/gaogzhen/baiduSyncdisk/study/java/framework/SpringCloud/01nacos/images/2023-03-22-nacos-osx-aarch-compile-error.png)]
首先我们去nacos-consistency模块pom.xml中看看它在哪里
org.xolstice.maven.plugins protobuf-maven-plugin 0.5.0 com.google.protobuf:protoc:${protobuf-java.version}:exe:${os.detected.classifier} grpc-java io.grpc:protoc-gen-grpc-java:${grpc-java.version}:exe:${os.detected.classifier} compile compile-custom
然后搜索了下protobuf有什么作用?
Protocol Buffers(简称Protobuf) ,是Google出品的序列化框架,与开发语言无关,和平台无关,具有良好的可扩展性。Protobuf和所有的序列化框架一样,都可以用于数据存储、通讯协议1^11。
这个东西我们现在只是有个概念,又不能随便删除,怎么解决编译报错呢?
继续搜索在如下地址https://github.com/grpc/grpc-java/issues/7690 找到问题解决方法
具体实施:pom.xml架构变量${os.detected.classifier}替换为osx-x86_64,如果你是Gradle构建的做如下替换
protobuf {protoc {artifact = 'com.google.protobuf:protoc:3.14.0:osx-x86_64'}
}
我用的maven,替换如下
com.google.protobuf:protoc:${protobuf-java.version}:exe:osx-x86_64 grpc-java io.grpc:protoc-gen-grpc-java:${grpc-java.version}:exe:osx-x86_64
重新编译, 成功启动nacos
参考地址:
[1]
[2]protoc-gen-grpc-java not available on apple m1 [CP/OL]