0

I'm building an application using a 'Micro Service' architecture. This means that I have different applications. The truth is that some logic is in a 'shared' library.

See the following directory structure:

ROOT/
├── Service 1/
│   ├── src
│   ├──── app.go
├── Service 2/
│   ├── src
│   ├──── app.go
└── Lib/
    ├── Lib 1
    │   ├── src
    │   ├──── app.go

Service 1, Service 2, and Lib 1, are all initialized with the go mod command.

For Service 1, this resulted in a go.mod file with the following contents.

module github.com/kevin-de-coninck/datalytics/services/serviceOne

For Service 2, this resulted in a go.mod file with the following contents.

module github.com/kevin-de-coninck/datalytics/services/serviceTwo

For Lib 1, this resulted in a go.mod file with the following contents.

module github.com/kevin-de-coninck/datalytics/lib/libOne

The import statements of Service 1 contains a reference to the Lib 1

import (
    "github.com/kevin-de-coninck/datalytics/lib/libOne"
)

However, when I try to build the application, the following output is showed:

go: finding github.com/kevin-de-coninck/datalytics/lib/libOne latest
go: finding github.com/kevin-de-coninck/datalytics/lib latest
go: finding github.com/kevin-de-coninck/datalytics latest
build github.com/kevin-de-coninck/datalytics/services/serviceOne/src: 
cannot find module for path github.com/kevin-de-coninck/datalytics/lib/libOne

How can I resolve this issue so that i can use my LibOne package without making it public or whithout copying it across all the services?

Kind regards

Complexity
  • 5,682
  • 6
  • 41
  • 84

1 Answers1

0

After some fiddling around, I have found my answer. It seems that the 'go.mod' and 'go.sum' file(s) should be placed in the 'src' directory. After doing that, the application can be build and executed.

Complexity
  • 5,682
  • 6
  • 41
  • 84