起因
- 想着将一些配置文件打包到go执行文件内,携带便捷。并且有一些配置敏感信息也不便泄露。
- 我的配置文件调用使用的是
打包工具产品
执行操作
go-bindata
# 安装
go get -u github.com/go-bindata/go-bindata/...
#验证是否安装 如果未执行成功,请验证下你的GOBIN变量和环境变量是否设置。
go-bindata --version
#
go-bindata -o assets/resource/dist.go -pkg resource resource/dist/...
go-bindata -o assets/stub/stub.go -pkg stub stub/...
go-bindata -o assets/view/view.go -pkg view view/...
D:.
├─.idea
│ └─dataSources
├─bindata
│ └─conf
├─conf
├─middleware
│ ├─cors
│ ├─jwt
│ └─makerToken
├─models
├─pkg
│ ├─comm
│ ├─e
│ ├─setting
│ └─util
├─resources
│ ├─database
│ ├─runtime
│ ├─static
│ │ └─json
│ └─templates
│ └─maker
└─routers
├─ad
├─demo
├─maker
└─swagger
# 执行将conf/app.ini 打包为bindata/conf/app.go文件 #包名 package conf
go-bindata -o bindata/conf/app.go -pkg conf conf/app.ini
#引用事例 pkg/setting/setting.go 文件内容
import "assist/bindata/conf"
func init() {
var err error
asset, err := conf.Asset("conf/app.ini")
if err != nil {
log.Fatalf("Fail to Asset parse 'conf/app.ini': %v", err)
}
log.Printf("asset: %T %v\n", asset, string(asset))
Cfg, err = ini.ShadowLoad(asset)
//Cfg, err = ini.ShadowLoad("conf/app.ini")
if err != nil {
log.Fatalf("Fail to parse 'conf/app.ini': %v", err)
}
LoadBase()
LoadServer()
LoadApp()
LoadMaker()
LoadAd()
LoadTools()
LoadSwagger()
}
# pkg/setting/setting.go 内容结束
go-bindata -o bindata/resources/templates/templates.go -pkg templates resources/templates/...
#三个点代表递归的将路径下的目录和文件加载进来 (大文件打包后goland是无法加载的,所以会在语法提示上爆红)
#爆红后实际运行没问题。
go-bindata -o bindata/resources/static/json/swaggers.go -pkg swaggers resources/static/json/...
#生成文件
bindata/resources/static/json/swaggers.go
#使用 routers/swagger/swagger.go 文件内容
import "apipost-assist/bindata/resources/static/json"
//新方法 http://localhost:20222/api/swagger/info3
func Info(c *gin.Context) {
f := c.Param("f")
//获取文件地址 setting.SPath = resources/static/json/
filePath := fmt.Sprintf("%vswagger%v.json", setting.SPath, f)
//filePath = resources/static/json/swagger1.json
b, err := swaggers.Asset(filePath) //resources/static/json/swagger1.json
c.String(http.StatusOK, string(b))
return
}
实战示例2
go-bindata -o bindata/resources/templates/templates.go -pkg templates resources/templates/...