首页 >后端开发 >Golang >如何在 Go 模块中嵌入构建时命令依赖项(例如 `github.com/aprice/embed/cmd/embed`)?

如何在 Go 模块中嵌入构建时命令依赖项(例如 `github.com/aprice/embed/cmd/embed`)?

Linda Hamilton
Linda Hamilton原创
2024-11-26 02:31:13461浏览

How to Embed a Build-Time Command Dependency (e.g., `github.com/aprice/embed/cmd/embed`) in Go Modules?

在 Go 模块中嵌入命令依赖

简介

Go 模块,Go 1.11 中引入,为 Go 提供依赖管理项目。除了运行时依赖项之外,用户可能需要在构建过程中使用 go 模块,特别是在 gogenerate 命令期间运行的工具。

问题

我如何合并特定的构建依赖项,例如 github.com/aprice/embed/cmd/embed,并从特定目录执行它? go 是否有适合此任务的工具?

答案

使用以下方法,您可以在 Go 模块中嵌入命令依赖项:

创建“工具”包

  1. 在项目中创建一个tools目录:

    mkdir -p internal/tools
  2. 将tools包放置在该目录下,如下图:
// internal/tools/tools.go
// +build tools

package tools

import (
    _ "github.com/UnnoTed/fileb0x"
)
  1. 请注意,构建标记指定文件何时应编译并可以根据您的项目要求进行自定义。

更新 go.mod

  1. 运行 go mod tidy 来更新您的 go.mod 文件并包含依赖项。
  2. 如果失败,请尝试执行其他命令,例如 go get、gogenerate 或 go安装。

供应

  1. 执行 go modvendor 下载 go.mod 中列出的所有依赖项的源代码。
  2. 修改您的构建命令(例如,go build、gogenerate)以包含 -mod=vendor 标志。这可以确保您的项目使用供应商的依赖项。

附加说明

  • 如果您遇到错误,指出您的程序不是可导入的包,创建一个工具包并导入依赖项。
  • 供应对于利用模块缓存和避免依赖关系至关重要冲突。

以上是如何在 Go 模块中嵌入构建时命令依赖项(例如 `github.com/aprice/embed/cmd/embed`)?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn