zoukankan      html  css  js  c++  java
  • govendor用法

    为什么使用govendor

    go语言的依赖管理最主要的是版本控制问题。
    govendor是Golang的依赖包管理工具,它的出现可以避免不同用户在clone同一个项目后从外部获取不同依赖库版本的问题。
    govendor会将项目需要的依赖包添加到项目的vendor目录下,并且该目录中vendor.json文件会保存添加的依赖包的路径等信息。
    Golang项目中的go文件在查找依赖的顺序是,先在vendor中查找,vendor没找到然后在GOPATH中查找,都没找到最后在GOROOT中查找。
    govendor只是用来管理项目的依赖包,如果GOPATH中本身没有项目的依赖包,则需要通过go get先下载到GOPATH中,再通过govendor add +external拷贝到vendor目录中。

    基本用法

    安装govendor:go get -u github.com/kardianos/govendor
    如果需要使用vendor的项目原本没有vendor,那么需要在该项目的目录下创建vendor
    govendor init
    之后如果需要添加依赖包,可以通过以下两种方式添加
    govendor fetch 依赖包路径
    govendor add 依赖包路径

    .gitignore的配置:

    /vendor/*
    !/vendor/vendor.json
    

    根据vendor.json下载依赖:govendor sync

    govendor用法例子:

    cd path/to/project
    govendor init
    govendor fetch project_url_with_out_http
    cat vendor/vendor.json
    

    govendor常用命令

    • 增加包,搜add,会得到add和fetch这2个命令。
    • 更新包,搜update,会得到update和fetch这2个命令。
    • 删除包,搜remove,得到remove这个命令。
    • 查看已经依赖的包,搜list,得到list、status、license命令,而符合你的是list,并且知道了status能列出过期的包。
    ➜  project_name git:(develop) govendor --help
    govendor (v1.0.9): record dependencies and copy into vendor folder
        -govendor-licenses    Show govendor's licenses.
        -version              Show govendor version
        -cpuprofile 'file'    Writes a CPU profile to 'file' for debugging.
        -memprofile 'file'    Writes a heap profile to 'file' for debugging.
    
    Sub-Commands
    
        init     Create the "vendor" folder and the "vendor.json" file.
        list     List and filter existing dependencies and packages.
        add      Add packages from $GOPATH.
        update   Update packages from $GOPATH.
        remove   Remove packages from the vendor folder.
        status   Lists any packages missing, out-of-date, or modified locally.
        fetch    Add new or update vendor folder packages from remote repository.
        sync     Pull packages into vendor folder from remote repository with revisions
                     from vendor.json file.
        migrate  Move packages from a legacy tool to the vendor folder with metadata.
        get      Like "go get" but copies dependencies into a "vendor" folder.
        license  List discovered licenses for the given status or import paths.
        shell    Run a "shell" to make multiple sub-commands more efficient for large
                     projects.
    
        go tool commands that are wrapped:
          "+status" package selection may be used with them
        fmt, build, install, clean, test, vet, generate, tool
    
    Status Types
    
        +local    (l) packages in your project
        +external (e) referenced packages in GOPATH but not in current project
        +vendor   (v) packages in the vendor folder
        +std      (s) packages in the standard library
    
        +excluded (x) external packages explicitly excluded from vendoring
        +unused   (u) packages in the vendor folder, but unused
        +missing  (m) referenced packages but not found
    
        +program  (p) package is a main package
    
        +outside  +external +missing
        +all      +all packages
    
        Status can be referenced by their initial letters.
    
    Package specifier
        <path>[::<origin>][{/...|/^}][@[<version-spec>]]
    
    Ignoring files with build tags, or excluding packages from being vendored:
        The "vendor.json" file contains a string field named "ignore".
        It may contain a space separated list of build tags to ignore when
        listing and copying files.
        This list may also contain package prefixes (containing a "/", possibly
        as last character) to exclude when copying files in the vendor folder.
        If "foo/" appears in this field, then package "foo" and all its sub-packages
        ("foo/bar", …) will be excluded (but package "bar/foo" will not).
        By default the init command adds the "test" tag to the ignore list.
    
    If using go1.5, ensure GO15VENDOREXPERIMENT=1 is set.
    
    命令 功能
    init 初始化 vendor 目录
    list 列出所有的依赖包
    add 添加包到 vendor 目录,如 govendor add +external 添加所有外部包
    add PKG_PATH 添加指定的依赖包到 vendor 目录
    update $GOPATH 更新依赖包到 vendor 目录
    remove 从 vendor 管理中删除依赖
    status 列出所有缺失、过期和修改过的包
    fetch 添加或更新包到本地 vendor 目录
    sync 本地存在 vendor.json 时候拉去依赖包,匹配所记录的版本
    get 类似 go get 目录,拉取依赖包到 vendor 目录
  • 相关阅读:
    习题2.4 递增的整数序列链表的插入(15 分)浙大版《数据结构(第2版)》题目集
    杭电 KazaQ's Socks
    B. Beautiful Paintings
    java之接口
    java之模板方法设计模式
    java之抽象类
    java之final关键字
    java之匿名内部类
    jvaa之初始化块
    java之单例设计模式
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/10982848.html
Copyright © 2011-2022 走看看