首页 > 解决方案 > go 模块是否提供了类似于 maven 范围的机制?

问题描述

说我在开发一个p系统的插件A,所以p自然要看A开发和测试的时候。

但是一旦pA. 在 Maven 中,可以使用provided范围声明依赖项,以避免不必要的版本冲突。

如何在 go 模块中实现这一点?

标签: gogo-modules

解决方案


不,不是的。但这不是什么大问题。假设您有foo_test.go,其中包括 to 的依赖项foo/bar/baz。现在,这个依赖项只会链接到测试二进制go test编译中。它不会包含在“主”二进制文件中。

这是 Go 的一个优点 - 编译器确定需要链接的内容并使用 Go 模块,他有一份材料清单,不仅按名称定义所需的依赖项,而且还包括提交。

正如所写的那样,将其内容想象成go.mod在处理项目时有时需要的材料清单,而不是构建胖 JAR的一组指令。

旁注:即使是 Maven 依赖项通常也不会进入生成的 JAR。Spring Boot 会这样做,但这不是默认的 Maven 行为;构建瘦 JAR是。


推荐阅读