I have a project with mutliple main methods.
When running go build program1/main1.go
which has a different set of dependencies than program2/main2.go
, my first go build
seems to alter my go.mod
file and removes the dependencies it thinks it does not need. Yet main2
would need these dependencies.
I've tried using go build ...
but that also created a different set of dependencies. Specifically, it seems like all the //indirect
dependencies get removed and cause program2 to fail.
Is there a way of running go build
or go run
without updating the go.mod
file? Using go build -mod=readonly program1/main1.go
it tells me that it fails because the dependencies need to be updated..
I believe you're looking for submodules. See this walktrhough.
TLDR: you'll want a separate go.mod
in each of your tools's cmd
dir, and you can use the replace
directive to point dependncies from these tools to your local module.
This Go Issue and others linked from it suggest that figuring out "the one right way" to do this is still WIP, though I think your use case is simple enough.