zoukankan      html  css  js  c++  java
  • godep使用

    安装:

    1、mac:brew Install godep,全局可用

    2、go get -u -v github.com/tools/godep  参数-u表示更新,-v可以看到进度信息。成功安装后,在$GOPATH的bin目录下会有一个godep可执行的二进制文件,后面执行的命令都是用这个,建议这个目录加入到全局环境变量中

    Godeps.json文件

    Godeps.json文件描述了工程依赖项。Godeps.json文件位于工程目录的子目录Godeps下

    包管理使用 godep

    工程目录应当是$GOPATH的子目录。以下命令都是在工程的根目录运行

    拉取依赖 restore 用于开发:godep restore

    如果下载的项目中只有Godeps.json文件,而没有包含第三库则可以使用godep restore这个命令将所有的依赖库下载到$GOPATHsrc中用于开发,godep restore执行时,godep会按照Godeps/Godeps.json内列表,依次执行go get -d -v来下载对应依赖包到GOPATH路径下;

    godep restore将Godeps/Godeps.json文件中指定的包安装到$GOPATH目录。

    godep restore,可以将vendor下的代码反向拷贝到$GOPATH下。

    检出依赖 :godep save

    扫描本项目的代码,将项目依赖的包及该包的版本号(即git commit)记录到Godeps/Godeps.json文件中;将依赖的代码从GOPATH/src中copy到vendor目录(忽略原始代码的.git目录)。

    • 自动扫描当前目录所属包中import的所有外部依赖库(非系统库)

    • 将所有的依赖库下载下来到当前工程中,产生文件 GodepsGodeps.json

    • 在没有 Godeps 文件的情况下,生成依赖目录vendor文件夹

    godep save会将工程依赖项复制到工程目录的vendor/子目录下。在这个过程中,以下文件不会复制

    • 没有纳入版本管理的文件
    • *test.go
    • testdata目录
    • go包外的其他文件

    godep 编译运行 build

    项目用godep管理后,要编译和运行项目的时候再用go run和go build显然就不行

    因为go命令是直接到GOPATH目录下去找第三方库,且在1.6以后支持vendor方式编译,而使用godep下载的依赖库放到Godeps/workspace目录下的,但是不影响继续使用依赖GOPATH目录,所以与三方工具本身不冲突

    故使用

    godep go build XXX
    

    godep中的go命令,就是将原先的go命令加了一层壳,执行godep go的时候,会将当前项目的workspace目录加入GOPATH变量中


    增加新的依赖包:

    1. Run go get foo/bar
    2. Edit your code to import foo/bar.
    3. Run godep save (or godep save ./…).

    如果要更新依赖包:

    1. Run go get -u foo/bar
    2. Run godep update foo/bar. (You can use the … wildcard, for example godep update foo/…).

    Godeps目录的作用

      godep save时godep把所有依赖包代码从GOPATH路径拷贝到Godeps目录下,并去除代码管理目录。这个用处主要是为了支撑godep go tool的一系列操作,尤其是git clone了代码库下来后,通常直接用godep go install xxx即可完成编译,一定程度上能够缓解golang比较严格的代码路径和包管理带来的烦恼。

    而在使用IDE时,可以通过把vendor添加到GOPATH实现代码跳转和编译等功能,比较方便

     
     

    vendor

    依赖GOPATH来解决go import有个很严重的问题:如果项目依赖的包做了修改,或者干脆删掉了,会影响我的项目。

    那么vendor属性的作用就是让go编译时,优先从项目源码树根目录下的vendor目录查找代码(可以理解为切了一次GOPATH),如果vendor中有,则不再去GOPATH中去查找。注意,必须将依赖包拷贝到$GOPATH/src目录中,否则go会无视vendor目录,仍然去$GOPATH/src中去找依赖包。


    参考:
    1、https://www.jianshu.com/p/db59b10c8c51
    2、https://ieevee.com/tech/2017/07/10/go-import.html#vendor
  • 相关阅读:
    c语言的注意事项(未完,以后遇到问题继续添加)
    const与指针的运用
    A7139射频模块wor配置解析
    lora项目注意事项(只用于本项目)
    串口通信数码管显示输入数字
    点阵图形上移
    按键弹起数字增加和按下增加
    数码管从999999倒计时
    中断与数码管秒表显示
    PHP控制连接打印机
  • 原文地址:https://www.cnblogs.com/shengulong/p/10230882.html
Copyright © 2011-2022 走看看