本地服务器配置差的和经常需要更换电脑开发的都知道,要么编译等半天,要么整天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 ""
无论从事什么行业,只要做好两件事就够了,一个是你的专业、一个是你的人品,专业决定了你的存在,人品决定了你的人脉,剩下的就是坚持,用善良專業和真诚赢取更多的信任。