处理Go Git存储库及其非代码资源



我是Go的新手,我正在努力寻找处理Git存储库的最佳方法。

目前我正在使用Go的官方建议的目录结构,但我认为它有很多陷阱。

就像

$GOPATH
  bin
    non-important-stuff
  pkg
    non-important-stuff
  src
    github.com
      username
        reponame

的情况是,我有许多非代码资源,如默认设置文件,html模板和图像…但它似乎有点奇怪,我把它放在"src/github.com/username/reponame"目录(因为第一个"src"部分)。

这个问题最常见的解决方案是什么?

我现在面临的另一个问题是,我不知道最常见的"make"工具来构建一个完整的项目与外部资源,如默认设置文件或html("go build/install"命令只照顾源代码文件)。当"安装"可执行文件时,如何处理相对路径?

免责声明:我已经阅读了这个线程:如何访问资源文件后'go'工具安装了可执行文件吗?,但我没有看到可靠的解决方案。我的可执行文件是一个服务器,每次我想重新配置服务器时,都不能嵌入设置文件并重新编译(也不能通过执行参数传递所有设置参数,因为设置文件非常复杂)。

我想你是在谈论web开发。

正如您正确指出的那样,目录结构是用于代码的,go工具套件只负责构建二进制文件并将它们放在常规位置(pkgbin)。

您需要的是二进制+资源文件的完整部署过程。

你应该滚动你自己的部署过程,或者使用现有的框架。

自制程序草图:

  • 将所有资源放在项目的特定目录下(例如resources/)
  • 使用git archive resources/捆绑文件
  • 将文件复制到可执行文件
  • 旁边
  • 选择一种方式调整本地参数(db服务器,db名称等)
  • 选择一种方式让你的服务器重新加载资源(重启服务器/系统地重新读取资源/检查修改日期/…)

如果你正在寻找一个现有的web框架:

Revel是一个选项,它照顾到很多方面,其中包括开发过程中的热重新编译和部署过程。

最新更新