本地服务器配置差的和经常需要更换电脑开发的都知道,要么编译等半天,要么整天git来回push,哪天忘了直接GG。无形中浪费了很多不必要的时间,影响效率,所以这个时候远程开发就成了一个非常不错的选择。
但goland截止目前的所有版本,还不支持远程IDE映射GOPATH,即使是远程源文件已经在本地导入,IDE也无法找到,所以就会出现以下情况:

本人查了全网也没有找到解决这个问题的方法!于是就写了个暂时解决的办法,希望goland在新的版本中能早日解决此问题!
解决办法:
将下方脚本放置在项目根目录中,执行后会生成IDE映射压缩包,下载导入到本地的GOROOT\src目录中,重新加载ide即可解决!
#!/bin/bash
if [ ! -f "go.mod" ];then
echo "go.mod不存在,请在切换到项目根目录后再次运行!"
exit
fi
#更新包
go mod tidy
# shellcheck disable=SC2006
pwd=`pwd`
#打包路径
packDir="pack"
#清空打包内容
rm -rf "$packDir"
#创建打包目录
mkdir "$packDir"
#从go.mod中读取需要的包
# shellcheck disable=SC2162
while read myline
do
#去前后空格
# shellcheck disable=SC2006
myline=`echo "$myline" | sed -e 's/^[ \t]*//g' -e 's/[ \t]*$//g'`
#跳过无用
# shellcheck disable=SC2086
result=$(echo $myline | grep "go ")
if [[ "$result" != "" ]];then
continue
fi
if [ -z "$myline" ];then
continue
fi
if [ "$myline" == ")" ];then
continue
fi
if [ "$myline" == "require (" ];then
continue
fi
##导入项目自身
# shellcheck disable=SC2086
result=$(echo $myline | grep "module ")
if [[ "$result" != "" ]];then
mkdir "$packDir/${myline#module *}"
# shellcheck disable=SC2046
# shellcheck disable=SC2006
# shellcheck disable=SC2010
#拷贝项目时跳过打包目录和临时目录,如果需要加入更多目录可以在其中继续增加:| grep -v 需要跳过
cp -r `ls | grep -v $packDir | grep -v tmp | xargs` "$packDir/${myline#module *}"
continue
fi
#去注释
myline=${myline%//*}
# shellcheck disable=SC2206
array=(${myline// / })
#包的原始路径
pkgDir=$GOPATH/pkg/mod/
count=0
# shellcheck disable=SC2068
for var in ${array[@]}
do
((count++))
#源地址
if [ "$count" == 1 ];then
pkgVar=$var
pkgVar=${pkgVar//A/!a}
pkgVar=${pkgVar//B/!b}
pkgVar=${pkgVar//C/!c}
pkgVar=${pkgVar//D/!d}
pkgVar=${pkgVar//E/!e}
pkgVar=${pkgVar//F/!f}
pkgVar=${pkgVar//G/!g}
pkgVar=${pkgVar//H/!h}
pkgVar=${pkgVar//I/!i}
pkgVar=${pkgVar//J/!j}
pkgVar=${pkgVar//K/!k}
pkgVar=${pkgVar//L/!l}
pkgVar=${pkgVar//M/!m}
pkgVar=${pkgVar//N/!n}
pkgVar=${pkgVar//O/!o}
pkgVar=${pkgVar//P/!p}
pkgVar=${pkgVar//Q/!q}
pkgVar=${pkgVar//R/!r}
pkgVar=${pkgVar//S/!s}
pkgVar=${pkgVar//T/!t}
pkgVar=${pkgVar//U/!u}
pkgVar=${pkgVar//V/!v}
pkgVar=${pkgVar//W/!w}
pkgVar=${pkgVar//X/!x}
pkgVar=${pkgVar//Y/!y}
pkgVar=${pkgVar//Z/!z}
#特殊的额外项
#pkgVar=${pkgVar/baidu/google} #将baidu替换为google
#echo "pkgVar:$pkgVar"
pkgPath="$pkgDir$pkgVar"
updatePath="$pwd/$packDir/$var"
fi
#版本号
if [ "$count" == 2 ];then
# shellcheck disable=SC2034
v=$var
pkgPath="$pkgPath@$var/."
fi
done
#导入第三方包
echo "源:$pkgPath"
echo "目标:$updatePath"
mkdir -p "$updatePath"
# shellcheck disable=SC2086
cp -r $pkgPath "$updatePath"
done < go.mod
#生成压缩包
# shellcheck disable=SC2164
cd "$packDir"
zip -r $packDir.zip ./*
mv $packDir.zip "$pwd"
#清空打包内容
# shellcheck disable=SC2115
rm -rf "$pwd/$packDir"
echo ""
echo "ide映射包打包完成,下载路径:$pwd/$packDir.zip "
echo "将压缩包解压到goland中配置的GOROOT的\src目录中即可,如:D:\Go\src "
echo ""无论从事什么行业,只要做好两件事就够了,一个是你的专业、一个是你的人品,专业决定了你的存在,人品决定了你的人脉,剩下的就是坚持,用善良專業和真诚赢取更多的信任。