解决goland远程开发ide爆红


本地服务器配置差的和经常需要更换电脑开发的都知道,要么编译等半天,要么整天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 ""



鼎云博客
  • 最新评论
  • 总共0条评论