Función GO111MODULE

Una,

  • Cuando no hay GO111MODULE, el orden en el que el compilador go encuentra las dependencias es go path> goroot. Con GO111MODULE, se leerá el archivo go.mod. Del proyecto actual y el archivo go.mod registrará qué dependencias están allí.

  • Go Modules es un método de gestión de dependencias del lenguaje Go. Esta función apareció en la versión Go 1.11. En proyectos recientes, el equipo ha comenzado a usar módulos go para reemplazar el Godep anterior. Kubernetes también comienza desde la v1.15 Se usa el módulo Go para la gestión de paquetes, por lo que es necesario aprender sobre el módulo go.

  • En comparación con el Godep original, el módulo go tiene ventajas de velocidad obvias en múltiples enlaces, como el empaquetado y la compilación, y puede reproducir fácilmente paquetes dependientes en cualquier sistema operativo. Más importante aún, el diseño del módulo go en sí hace que sea más fácil ser citado por otros proyectos, que es otra manifestación importante de la evolución del proyecto de Kubernetes al marco.

dos,

  • Después de usar el módulo go para administrar las dependencias, se generarán dos archivos go.mod y go.sum en el directorio raíz del proyecto.
    Las dependencias del proyecto actual se registrarán en go.mod, y el formato de archivo es el siguiente:
module github.com/gosoon/audit-webhook
go 1.12
require (
github.com/elastic/go-elasticsearch v0.0.0
github.com/gorilla/mux v1.7.2
github.com/gosoon/glog v0.0.0-20180521124921-a5fbfb162a81
)

  • go.sum registra la versión y el valor hash de cada biblioteca dependiente. El formato de archivo es el siguiente:
github.com/elastic/go-elasticsearch v0.0.0 h1:Pd5fqOuBxKxv83b0+xOAJDAkziWYwFinWnBO0y+TZaA=
github.com/elastic/go-elasticsearch v0.0.0/go.mod h1:TkBSJBuTyFdBnrNqoPc54FN0vKf5c04IdM4zuStJ7xg=
github.com/gorilla/mux v1.7.2 h1:zoNxOV7WjqXptQOVngLmcSQgXmgk4NMz1HibBchjl/I=
github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
github.com/gosoon/glog v0.0.0-20180521124921-a5fbfb162a81 h1:JP0LU0ajeawW2xySrbhDqtSUfVWohZ505Q4LXo+hCmg=
github.com/gosoon/glog v0.0.0-20180521124921-a5fbfb162a81/go.mod h1:1e0N9vBl2wPF6qYa+JCRNIZnhxSkXkOJfD2iFw3eOfg=

3. Cómo habilitar la función del módulo Go

(1) go versión> = v1.11
(2) Establecer la variable de entorno GO111MODULE
  • Para usar el módulo go, primero debe configurar GO111MODULE = on. GO111MODULE tiene tres valores, off, on, auto, off y on se apagan y encienden, y auto determinará si se debe usar la función de módulos en función de si hay un go Archivo .mod en el directorio actual.

  • Independientemente del modo que se utilice, la función del módulo no busca archivos dependientes en el directorio GOPATH de forma predeterminada, así que configure el proxy cuando utilice la función de módulos.

  • Cuando utilice el módulo go, desactive la variable de entorno global GO111MODULE y luego actívela cuando necesite usarla para evitar introducir accidentalmente el módulo go en proyectos existentes.

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 (解释为什么需要依赖)

Cuarto, use la función del módulo go

1. Utilice el módulo go para nuevos proyectos:
  • $ = GO111MODULE exportación de
    $ van mod init github.com/you/hello
    ...
  • // go build agregará las dependencias del proyecto para go.mod
    $ go build
2. Para proyectos existentes, cambie para usar el módulo go:
  • $ export GO111MODULE = on
    // Crea un archivo go.mod vacío
    $ go mod init.

  • // Busque dependencias y regístrelas en el archivo go.mod
    $ go get. / ... El
    archivo go.mod debe enviarse al repositorio git, pero el archivo go.sum no necesita enviarse al repositorio git (ignore el archivo. Gitignore para configurarlo).

Cinco, el empaque del proyecto.

  • Primero, debe usar go mod vendor para descargar todas las dependencias del proyecto en el directorio de proveedores locales y luego compilarlo. Aquí hay una referencia:
go mod vendor
go build -ldflags “-s -w” -a -installsuffix cgo -o audit-webhook .

Seis, asuntos que necesitan atención

1. Depende de la descarga
  • Por defecto, el módulo go no busca archivos dependientes en el directorio GOPATH. Primero buscará las dependencias requeridas en GOPATH / pkg / mod y descargará directamente si no hay ninguna.
  • Puede usar gomoddownload para descargar las dependencias requeridas. De forma predeterminada, las dependencias se descargarán a GOPATH / pkg / mod para averiguar si hay dependencias requeridas. De lo contrario, se descargarán directamente.
  • Puede usar go mod download para descargar las dependencias requeridas. De forma predeterminada, las dependencias se descargarán en GOPATH / pkg / mod para averiguar si hay dependencias requeridas. De lo contrario, se descargarán directamente.
  • Puede usar gomoddownload para descargar las dependencias requeridas. Las dependencias se descargarán a GOPATH / pkg / mod por defecto, y otros proyectos también usarán módulos en caché.

Supongo que te gusta

Origin blog.csdn.net/weixin_43272542/article/details/115154147
Recomendado
Clasificación