我是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工具套件只负责构建二进制文件并将它们放在常规位置(pkg
或bin
)。
您需要的是二进制+资源文件的完整部署过程。
你应该滚动你自己的部署过程,或者使用现有的框架。
自制程序草图:
- 将所有资源放在项目的特定目录下(例如
resources/
) - 使用
git archive resources/
捆绑文件 - 将文件复制到可执行文件 旁边
- 选择一种方式调整本地参数(db服务器,db名称等)
- 选择一种方式让你的服务器重新加载资源(重启服务器/系统地重新读取资源/检查修改日期/…)
如果你正在寻找一个现有的web框架:
Revel是一个选项,它照顾到很多方面,其中包括开发过程中的热重新编译和部署过程。