使用cmd和pkg布局构建项目 - 构建错误

时间:2017-12-09 15:57:27

标签: go build standards

我尝试使用Go Project Layout

中描述的布局构建Go项目

我在Ubuntu上使用go 1.9.2。我的项目布局如下

$GOPATH/src/github.com/ayubmalik/cleanprops
    /cmd
        /cleanprops
            /main.go
    /internal
        /pkg
            /readprops.go

文件cmd / cleanprops / main.go指的是cleanprops包,即

package main

import (
    "fmt"
    "github.com/ayubmalik/cleanprops"
)

func main() {
    body := cleanprops.ReadProps("/tmp/hello.props")
    fmt.Println("%s", body)
}

内部/ pkg / readprops.go的内容是:

package cleanprops

import (
    "fmt"
    "io/ioutil"
)

func check(e error) {
    if e != nil {
        panic(e)
    }
}

func ReadProps(file string) string {
    body, err := ioutil.ReadFile(file)
    check(err)
    fmt.Println(string(body))
    return body
}

但是当我从目录$ GOPATH / src / github.com / ayubmalik / cleanprops内部构建cmd / cleanprops / main.go时,使用命令:

go build cmd/cleanprops/main.go 

我收到以下错误:

cmd/cleanprops/main.go:5:2: no Go files in /home/xyz/go/src/github.com/ayubmalik/cleanprops

我错过了什么?

1 个答案:

答案 0 :(得分:3)

该文件提出了这种结构:

$GOPATH/src/github.com/ayubmalik/cleanprops
    /cmd
        /cleanprops
            /main.go
    /internal
        /pkg
            /cleanprops
                /readprops.go

像这样导入包。导入路径与$ GOPATH / src下的目录结构匹配。

package main

import (
    "fmt"
    "github.com/ayubmalik/cleanprops/internal/pkg/cleanprops"
)

func main() {
    body := cleanprops.ReadProps("/tmp/hello.props")
    fmt.Println("%s", body)
}