我写了一个本地模块a,go mod文件内容:
```go
module a
go 1.13
```
我模块a想作为一个公共的组件,就在放在本地的。
然后写了个应用b,go mod文件内容:
```go
module b
go 1.13
require (
github.com/go-sql-driver/mysql v1.4.1
github.com/a v0.0.0
)
replace github.com/a => ../a
```
出现的问题是,我再写模块a的时候,里面又内部的包需要被其他的内部包引用。
我写`import a/ap`,测试a没问题。
我再b模块编译的时候就会报错了,会报不能导入`a/ap`。
像这样,应该怎么在a模块内部自己用自己的包,在不会再其他模块使用的时候不会编译报错?
更多评论
方法一:
1、 在a/ap目录下使用`go mod init a/ap`新建mod文件;
2、 在b的mod里面添加`replace a/ap => ../a/ap`;
方法二:
1、在b模块的mod中替换时,使用绝对路径,`replace a => /xxx/a`
#1
还有一种就是:
1、a模块使用`go mod init github.com/xxx/a`;
2、上传a模块到github对应xxx账号;
3、在b引用的时候,也不用replace了,直接`import "github.com/xxx/a"`, 让go mod自己去缓存;
# 我觉得这个才是正解。
#2