zoukankan      html  css  js  c++  java
  • Go 1.11 Module 介绍


    title: "Go 1.11 Module"
    date: 2018-10-26T23:50:56+08:00
    draft: false

    Go 1.11 Module 介绍

    go 1.11 发布了一种新的模式来管理go程序的依赖库,这种方式不同于vendor模型。

    它主要提供下面几个重要特性:

    • 更方便的脱离GOPATH来工作(我理解是,逐渐淡化GOPATH,GOPATH一度给入门golang的新人留下很多坑)
    • 使用$GOPATH/pkg/mod来存储go mod的缓存文件,提高go get速度
    • 可选的$GOPROXY和goproxy交互机制
      • 提供公司级或局域网级私有go mod服务器
      • golang.org/x/text等老大难第三方依赖库提供缓存和提速

    启用 go mod

    为启用go mod,需要配置GO111MODULE环境变量:

    • GO111MODULE=off 无模块支持,go 会从 $GOPATHvendor 文件夹寻找包。
    • GO111MODULE=on 模块支持,go 会忽略 $GOPATHvendor 文件夹,只根据 go.mod 下载依赖。
    • GO111MODULE=auto$GOPATH/src 外面且根目录有 go.mod 文件时,开启模块支持。

    go mod 对其它命令的影响

    1. go get
      1. 如果强制启用 go mod, go get现在支持针对版本号去get指定项目。
      2. go get必须在一个启用了 go mod 的项目的根目录去执行,这样执行过go get,将会自动改下本目录下的go.mod文件。
    2. go build
      1. go build 会先检查当前目录中go.mod记录的依赖,并检查$GOPATH/pkg/mod中的缓存,如果没有,则会启动go get流程。
      2. go build可以强制提供一个参数go build -mod vendor来使用vendor模式,而不是go mod自身在gopath中缓存的文件。

    使用GOPROXY

    此处有一个开源版本的 goproxy.io

    和它的github主页 github.com/goproxyio

    自建GOPROXY server

    Athens is a Server for Your Go Packages

    项目地址 https://github.com/gomods/athens

    Athens可以用来在公司内部建立自己的私有go mod服务器,
    或者在公网建立一个对外公开的GOPROXY server

    参考:

  • 相关阅读:
    怎样运用Oracle的BFILE
    第一个博客
    返回引用的函数
    c++之SQLite的增删改查
    sqlite命令行程序说明
    CreateProcess函数详解
    注册窗口类
    radio button的用法
    跨线程使用CSocket
    关于socket的connect超时的问题
  • 原文地址:https://www.cnblogs.com/morya/p/9859420.html
Copyright © 2011-2022 走看看