我正在为一个多平台项目寻找一个好的项目组织,其中包含用Go编写的多个组件.我知道从
http://golang.org/doc/code.html推荐的布局,但布局建议似乎不符合我的要求.
项目组成部分是:
>服务器(用Go编写)
>客户端,跨平台(Go)
>库,服务器和客户端之间共享(Go)
>更多客户(iOS,Android)
我的要求是:
>单个git存储库中的所有组件
>保持组件分离(例如,每个组件一个目录)
> Go组件可以构建为多个子包
我目前的做法:
project/ (this is the repository root) server/ server.go (package main) src/ server/ package1/ package1.go ... client/ client.go (package main) src/ client/ package2/ package2.go ... lib/ src/ lib/ lib.go ... client-ios/ ... client-android/ ...
要构建,我使用Makefile
>将lib /复制到服务器/和客户端/
>单独构建服务器/和客户端/,每次都将GOPATH设置到相应的目录.
它有效,但感觉非常笨重,与推荐的代码布局完全不同.
这是我正在考虑的替代方案:
project/ (this is the repository root) gospace/ src/ server/... client/... lib/... client-ios/ ... client-android/ ...
有了这个布局,我有一个GOPATH(gospace /),不需要klunky Makefile.但是,组件不像第一种替代方案那样整齐地分开(即通过顶级目录).
我的问题:哪种项目布局最适合我的要求和Go约定和工具支持?有没有更好的选择,我还没有看到?
这就是我组织类似项目的方式:
$GOPATH/src/project-root/ lib.go lib_test.go server/ server.go server_test.go main/ server.go // package main; import "project-root/server" client/ client.go client_test.go main/ client.go //package main; import "project-root/client" client-ios/ .... client-android/ ....
虽然大多数服务器/ server.go和client / client.go作为软件包主应该工作,但最好将它分开,以便您可以将客户端/服务器嵌入其他项目中.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。