来自 shell 脚本的假 go 环境
Fake go environment from a shell script
我正在使用带 goland 插件的 Ultimate 和 dep
。我以前也在 GOPATH
外面工作。通常我不知道我正在使用 shell 脚本和 Makefile
来构建项目并且到目前为止我对此很满意。 dep
集成的想法当然迫使我在 GOPATH/src
内部工作。有什么方法可以将 IDE 配置为 运行 一个 shell 脚本,它将伪造项目环境,设置 GOPATH
、GOBIN
并制作 dep
很高兴摆脱 ... is not within a known GOPATH/src
和 "missing" 导入。
我已经尝试通过 ./build/env.sh idea .
运行 它,但仍然缺少导入和 ... is not within a known GOPATH/src
。也尝试使用项目设置,似乎没有什么可以满足 gep
.
env.sh
#!/bin/sh
set -e
if [ ! -f "build/env.sh" ]; then
echo "[=11=] must be run from the root of the repository."
exit 2
fi
project="proj"
repositoryRoot="domain.com/username"
# Create fake Go workspace if it doesn't exist yet.
workspace="$PWD/build/_workspace"
root="$PWD"
dir="$workspace/src/$repositoryRoot"
if [ ! -L "$dir/$project" ]; then
mkdir -p "$dir"
cd "$dir"
ln -s ../../../../../. $project
cd "$root"
fi
# Set up the environment to use the workspace.
# Also add Godeps workspace so we build using canned dependencies.
GOPATH="$workspace"
GOBIN="$PWD/build/bin"
# Run the command inside the workspace.
cd "$dir/$project"
PWD="$dir/$project"
# Launch the arguments with the configured environment.
exec "$@"
生成文件
.PHONY: all test clean
GOBIN = build/bin
all:
build/env.sh go get github.com/golang/dep/cmd/dep
build/env.sh $(GOBIN)/dep ensure
build/env.sh go build -v -o $(GOBIN)/proj
简短的回答是否定的,你不能。 GoLand/IntelliJ带有 Go 插件的 IDEA Ultimate 无法以预期的方式工作。他们尊重 Go Workspace 布局,你应该这样构建你的代码。
如果您从 dep
切换到 Go Modules,那么您将能够在任何地方创建您的项目,并且没有与 GOPATH 模式相同的限制。在这里您可以阅读更多关于 working with Go Modules.
的信息
我正在使用带 goland 插件的 Ultimate 和 dep
。我以前也在 GOPATH
外面工作。通常我不知道我正在使用 shell 脚本和 Makefile
来构建项目并且到目前为止我对此很满意。 dep
集成的想法当然迫使我在 GOPATH/src
内部工作。有什么方法可以将 IDE 配置为 运行 一个 shell 脚本,它将伪造项目环境,设置 GOPATH
、GOBIN
并制作 dep
很高兴摆脱 ... is not within a known GOPATH/src
和 "missing" 导入。
我已经尝试通过 ./build/env.sh idea .
运行 它,但仍然缺少导入和 ... is not within a known GOPATH/src
。也尝试使用项目设置,似乎没有什么可以满足 gep
.
env.sh
#!/bin/sh
set -e
if [ ! -f "build/env.sh" ]; then
echo "[=11=] must be run from the root of the repository."
exit 2
fi
project="proj"
repositoryRoot="domain.com/username"
# Create fake Go workspace if it doesn't exist yet.
workspace="$PWD/build/_workspace"
root="$PWD"
dir="$workspace/src/$repositoryRoot"
if [ ! -L "$dir/$project" ]; then
mkdir -p "$dir"
cd "$dir"
ln -s ../../../../../. $project
cd "$root"
fi
# Set up the environment to use the workspace.
# Also add Godeps workspace so we build using canned dependencies.
GOPATH="$workspace"
GOBIN="$PWD/build/bin"
# Run the command inside the workspace.
cd "$dir/$project"
PWD="$dir/$project"
# Launch the arguments with the configured environment.
exec "$@"
生成文件
.PHONY: all test clean
GOBIN = build/bin
all:
build/env.sh go get github.com/golang/dep/cmd/dep
build/env.sh $(GOBIN)/dep ensure
build/env.sh go build -v -o $(GOBIN)/proj
简短的回答是否定的,你不能。 GoLand/IntelliJ带有 Go 插件的 IDEA Ultimate 无法以预期的方式工作。他们尊重 Go Workspace 布局,你应该这样构建你的代码。
如果您从 dep
切换到 Go Modules,那么您将能够在任何地方创建您的项目,并且没有与 GOPATH 模式相同的限制。在这里您可以阅读更多关于 working with Go Modules.