• Go语言包管理工具dep


    什么是dep?

    dep和go,在一定程度上相当于maven之于Java,composer之于PHP,dep是go语言官方的一个包管理工具。

    相比较go get而言,dep可以直接给引入的第三方包一个专门的目录,并且可以专门制定一个配置文件,控制go项目所引入的包,版本以及其他依赖关系。

    dep这个项目放在golang官方的github中:https://github.com/golang/dep

    官方对于dep的解释是:dep is the official experiment, but not yet the official tool. 也就是说,dep目前还处于试验阶段,还并没有成为一个官方意义上的工具。毕竟go语言还很年轻,但是这也充分的证明了go语言的生态圈十分丰富。

    安装

    安装dep工具的方式有很多种,如果是mac电脑的话,只需要如下命令:

    brew install dep

    对于Linux和类Unix系统而言,我们还可以使用如下方式安装dep:

    curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh

    或者直接使用源码安装。

    而对于windows电脑,可能会相对来说麻烦些,我们可以直接使用源码编译安装或者直接使用go get命令安装:

    go get -u github.com/golang/dep/cmd/dep

    待安装完成之后,将dep.exe放在环境变量就可以使用了。

    使用

    接下来我们来看一下dep的使用方式。

    当安装好dep之后,我们在命令行中,输入dep就可以看到有关dep的命令了。

    Dep is a tool for managing dependencies for Go projects
    
    Usage: "dep [command]"
    
    Commands:
    
      init     Set up a new Go project, or migrate an existing one
      status   Report the status of the project's dependencies
      ensure   Ensure a dependency is safely vendored in the project
      version  Show the dep version information
    
    Examples:
      dep init                               set up a new project
      dep ensure                             install the project's dependencies
      dep ensure -update                     update the locked versions of all dependencies
      dep ensure -add github.com/pkg/errors  add a dependency to the project
    
    Use "dep help [command]" for more information about a command.

    我们可以看出来,dep一般进场会使用3个命令:

    init-用来初始化项目

    status-用来查看当前项目的依赖包的状态

    ensure-用来同步包的配置文件和引入的包

    下面我们正式使用dep来创建一个项目。首先建立一个项目路径,这里我们将项目路径叫做depProject。然后在项目路径中建立src源代码目录。在src中建立一个存放dep文件和项目主文件的目录,我们暂且可以叫做depmain,并建立一个go文件。

    这样我们的目录结构如下:

    depProject
        |----src
              |----depmain
                      |-----main.go

    建立好之后,我们在main.go中写一个简单的go程序:

    1 package main
    2 
    3 import (
    4     "fmt"
    5 )
    6 func main() {
    7     fmt.Println("hello)
    8 }

    之后我们在这个目录下运行如下命令:

    dep init

    运行完成之后,dep就会为我们自动生成如下文件和目录:

    有点像常规go项目的样子了,不过需要注意的是pkg中存放的go语言引入包的缓存文件,vendor中存放的是真正的引入的包内容。接下来是两个文件,Gopkg.lock和Gopkg.toml。Gopkg.lock文件是自动生成的,而Gopkg.toml文件是我们可以编辑的文件,通过编辑这个文件,并运行dep的命令可以达到引入包的目的:

    # 必需包
    required = ["github.com/gin-gonic/gin"]
    # 忽略包
    #ignored = []没有可以不写
    # 项目元数据
    #[metadata]
    
    
    # 约束条件
    [[constraint]]
      # name = 
      # 可选:版本
      # version =
      # 分支
      # branch
      # 修订
      # revision
      # 可选:指定来源
      # source = "github.com/gin-gonic/gin"

    以上代码是一个示例,我们写好之后运行

    dep ensure

    就可以了,我们会看到vendor下多了一些有关此包的依赖和引入。

    我们引入了gin框架的包,所以我们现在就可以使用gin框架了,写的时候,和我们平时的go语言项目一样:

     1 package main
     2 
     3 import "github.com/gin-gonic/gin"
     4 
     5 func main() {
     6     r := gin.Default()
     7     r.GET("/ping", func(c *gin.Context) {
     8         c.JSON(200, gin.H{
     9             "message": "pong",
    10         })
    11     })
    12     r.Run() // listen and serve on 0.0.0.0:8080
    13 }

    这样做完全没有问题,我们只用考虑这个包原本的路径github.com/gin-gonic/gin就好。

    接下来我们就可以编译运行这个项目了。

    另外需要注意的是,使用dep管理包控制依赖的时候,如果我们需要新建目录,并编写自己的新的包名的时候,只需要在src下新建目录就可以了。这样做才能正确引入。

    比如:我们要编写一个add的函数,我们可以这样,在src下简历一个utils目录,下写个add.go文件:

    1 package utils
    2 
    3 func Add(a int, b int) int {
    4     return a+b
    5 }

    这样在主程序中,这样写就可以import自己写的包,并使用自己的函数了:

    package main
    
    import (
        "utils"
        "fmt"
    )
    func main() {
        fmt.Println("hello")
        utils.Add(1, 1)
    }
  • 相关阅读:
    VMware workstation中安装Ubuntu18.04server
    python一行命令安装chromedriver
    vim配置&相关问题
    博客园美化
    期望DP——HDU4035Maze
    [学习笔记]虚树
    线段树——51nod1593&CF515E 公园晨跑
    [STL] multiset
    [学习笔记] 线性基
    泛化物品优化树型DP——[HAOI2010]软件安装
  • 原文地址:https://www.cnblogs.com/cafe-cat/p/9292125.html
Copyright © 2020-2023  润新知