2017-04-25 30 views
2

我在GoLang中使用了以前在不同情况下具有导入路径的第三方库。最初一封信是小写,然后作者将其改为大写。如何处理区分大小写的导入冲突

一些插件作者更新了他们的库,而另一些则没有。同时,原始图书馆作者恢复了案例变更。

现在我发现自己处于由于大小写导入冲突导致应用程序无法生成的状态。

如何解决这个问题?

非常感谢

+0

编辑源文件以匹配当前状态?这就是我一直所做的。好奇看看是否有更好的答案。 – Flimzy

回答

4

你可以供应商的依赖,然后进入vendor/目录和手动更改(尝试grep ING或sed荷兰国际集团的依赖),依赖。

的介绍,vendoring,尝试在这里,https://blog.gopheracademy.com/advent-2015/vendor-folder/

原来的回购仍然可以住在你的GOPATH,但“修正”版本可以在供应商的文件夹,在其中编译器会第一去链接依赖关系时。

有用于vendoring许多工具,我用govendor

编辑

由于mkopriva,你可以重构进口名使用gofmt工具在评论中提到:

gofmt -w -r '"path/to/PackageName" -> "path/to/packagename"' ./

gofmt -w -r 'PackageName.x -> packagename.x' ./

小写单字符标识符是通配符

从文档

用-r标志指定的重写规则必须是以下形式的字符串:

pattern -> replacement

两个模式和替代必须是有效的去表达。在该模式中,单字符小写标识符用作匹配任意子表达式的通配符;这些表达式将替换替换中的相同标识符。

+2

作为'grep'的替代方法,你也可以使用[gofmt工具](https://golang.org/cmd/gofmt/)。例如。用于更改导入'gofmt -w -r'“path/to/PackageName” - >“path/to/packagename”'。/'并更改该包上的*选择器表达式* gofmt -w -r'PackageName .x - > packagename.x'。/' – mkopriva

相关问题