zoukankan      html  css  js  c++  java
  • go mod位置和自定义包引入问题

    对于mod使用好多人不是那么清楚,今天刚好有人问我这个问题,就把这个事情说一下子。
    首先说一下基本使用,想看标题问题的略过看结尾的二部分

    mod使用

    准备事项,两个环境变量,如图

     
    image.png

    1.开始使用,命令

    go mod init 你的项目名称
    
    example : go mod init myproject
    

    执行该命令后,执行的目录下面就会出现一个go.mod文件

    2.开始写入使用包,直接执行构建语句,就是go build,然会进行下载对应的包

     
    image.png

    执行完毕后就会文件会出现你使用的一些包,还会出现一个go.sum的文件,记录了你的版本过程


     
    image.png

    至此,已经是可以运行了,不过还可以将对应包下载保存

    3.本地保存使用包,命令

    go mod vendor
    

    执行该命令后,会出现一个vendor文件夹,里面就是你引用的所有包,由此就可以看出,使用mod后,已经不用依赖于原始的gopath,灵活性更高了。

    如果使用过程中有包的变动等,可以使用其他命令辅助,比如go mod tidy,整理你的包目录。

    go mod命令(详细信息请移步官方,这里简略说一下)

    download:download modules to local cache (下载依赖的module到本地cache))

    edit :edit go.mod from tools or scripts (编辑go.mod文件)

    graph : print module requirement graph (打印模块依赖图))

    init :initialize new module in current directory (再当前文件夹下初始化一个新的module, 创建go.mod文件))

    tidy : add missing and remove unused modules (增加丢失的module,去掉未用的module)

    vendor :make vendored copy of dependencies (将依赖复制到vendor下)

    verify : verify dependencies have expected content (校验依赖)

    why : explain why packages or modules are needed (解释为什么需要依赖)

    问题分析

    1.目录中有自己的定义包怎么办,出现以下问题,说你的包不在goroot中,就是i说找不到

    main.go:4:2: package xx/xx is not in GOROOT (C:Gosrcxx)
    main.go:5:2: package xx/xx is not in GOROOT (C:Gosrcxx)
    

    问题解决:

    该问题就是构建mod的路径不对,以我当前的这个项目为例


     
    image.png

    common文件夹里面是项目启动main,如果在这里构建mod,然后,这个启动项里面引用了其他几个包(上一级的core,lib,loader等),这时候,就会找不到这些包

    解决办法:

    在项目根目录下面构建mod包,这些引用的包都在该目录下,这样就没有问题了。以我这里为例,根目录是stbweb,启动项common中引用了其他包,我就直接在stbwb(项目运行根目录)目录下执行go mod init stbweb即可。然后再进入启动main函数目录去执行go build,自然就好了

     


    作者:哆啦在这A梦在哪
    链接:https://www.jianshu.com/p/dd58da3100d7
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    Atitti 图像处理 图像混合 图像叠加 blend 原理与实现
    Atitit Gaussian Blur 高斯模糊 的原理and实现and 用途
    Atitit 图像处理 灰度图片 灰度化的原理与实现
    Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结
    Atitit 实现java的linq 以及与stream api的比较
    Atitit attilax在自然语言处理领域的成果
    Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库
    Atitit 图像处理--图像分类 模式识别 肤色检测识别原理 与attilax的实践总结
    Atitit apache 和guava的反射工具
    atitit。企业的价值观 员工第一 vs 客户第一.docx
  • 原文地址:https://www.cnblogs.com/jasonLiu2018/p/14547110.html
Copyright © 2011-2022 走看看