【问题标题】:Does go modules provide a mechanism like maven's scope?go 模块是否提供了类似于 maven 范围的机制?
【发布时间】:2019-12-12 16:28:29
【问题描述】:

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

但是一旦pA 集成,这种依赖就没有必要了。在 Maven 中,可以使用 provided 范围声明依赖项,以避免不必要的版本冲突。

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

【问题讨论】:

    标签: go go-modules


    【解决方案1】:

    不,它没有。但这不是什么大问题。假设您有foo_test.go,其中包括对foo/bar/baz 的依赖。现在,这种依赖关系只会被 linked 动态编译到测试二进制文件 go test 中。它不会包含在“主”二进制文件中。

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

    正如所写,将go.mod 的内容更像是处理项目时需要的材料清单,而不是构建fat JAR 的一组说明。

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

    【讨论】:

    • 但是如果我在普通代码中包含依赖foo/bar/baz,而不是 int 测试代码呢?
    猜你喜欢
    • 1970-01-01
    • 2015-07-17
    • 2011-05-31
    • 2022-08-02
    • 2017-09-09
    • 2011-03-24
    • 1970-01-01
    • 2021-09-20
    相关资源
    最近更新 更多