WSL开发系列-idea篇(WSL2配置与结合IDEA2021使用体验(及wsl-gui踩坑))

2023.2更新:因更新较多,将大部分内容迁移至 WSL开发系列。
随着版本的迭代完善,加上本人丰富的踩坑经验,本人已放弃使用wslg版idea。
更推荐直接使用windows-idea的wsl功能。

本文给出相关使用建议。

导航

一 idea-wsl开发总结

首先需要明确,绝大部分开发工作都是可以在windows环境下完成的。
不推荐任何为了linux而linux的行为。

对我来说,WSL的开发应用场景主要在于:

  • 大数据功能开发
    之前简单的hdfs操作都需要在windows中配置hadoop相关的环境变量,而且存在各种版本或兼容性问题,很麻烦,以后这些直接丢wsl里面
  • 大数据组件编译
    很多组件并不是纯Java代码,可能还需要一些脚本,这些有平台依赖性的,很可能因为windows而导致编译失败
  • linux脚本测试

以下为之前的记录,可参考,部分已过期。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
此部分过期:

经过测试,常规SpringBoot工程,在Windows目录下的,可以使用WSL环境进行debug、部署
对于纯maven工程,支持也还好
但对于纯gradle工程(非spring),则无法完成gradle初始化,无论工程是否是在WSL中都不行
设置JDK是WSL,但将Gradle路径指定为WSL却一直不行,说路径有问题,只能使用默认的Gradle。
根据issue的说法,建议将Windows的gradle path设置为WSL的路径,不过我没有试,我觉得这单纯就是官方的bug。
官方issue:https://youtrack.jetbrains.com/issues/IDEA?q=wsl
另外,对于WSL下工程的git,idea似乎也无法识别
总之,IDEA(2021.1)的WSL2支持尚不成熟,但是也已经初步支持,还可以自动下载、选择WSL环境的JDK
可以作为日常开发的辅助支持,但目前仍不建议全面迁移过去

202111月更新:
IDEA2021.2.3的wsl工程的bug已经较少,git、gradle支持相对正常,可以满足一般场景下的开发需求。
但仍不能在工程里读取到wsl的环境变量(能读取到windows的),所以我选择放弃。
直接在WSLg里装jetbrains toolbox,然后启动idea。
除去一些小bug,已经和原生linux体验差不多了,用来做大数据开发很舒服。
配置好环境就可以直接本地进行大数据操作,不再需要远程开发了,之前被这东西折磨得不行。
性能的话比windows idea的wsl开发要快很多,前提是你内存够。
wsl比较吃内存,当然开发的标配是32g,一般还是够用的。

目前遇到的问题有:
1. 全屏偏移
在全屏状态下,无法进行部分拖拽操作,可能与这个issue有关
https://github.com/microsoft/wslg/issues/502
2. 卡死
通常是在调出新的窗口的时候
需要手动wsl --shutdown,再启动,但可能造成idea文件未保存,修改丢失的情况
在windows上不管怎么造基本都不会出现idea文件修改丢失的情况

总结一下,idea的wsl开发有两种方案:idea自带的wsl支持,以及,利用wslg在Linux系统里面装idea

  1. idea自带的wsl支持
    前期存在较多bug,现使用上没有明显问题,
    缺点是无法读取到wsl环境变量、性能相对较差
  2. wslg的idea
    优点是原生linux应用、速度更快
    缺点是wslg应用和windows切换并不顺畅,如输入法、快捷方式等
    另外存在应用冻结(卡死)的bug,需强制关闭wsl重启,甚至会丢修改,这是不能忍受的

wslg的缺点是无法忍受的,所以最终我还是决定使用idea自带的wsl支持
下面会分享我个人的一些使用体验和处理方法

二 idea-wsl开发经验

  1. 尽量使用基于wsl的环境
    如:项目放在wsl文件系统下,运行目标选择wsl,项目jdk选择wsl的,gradle jvm也选择wsl的
  2. 处理环境变量加载问题
    运行目标选择wsl的工程,无法在运行时获取到wsl系统变量(/etc/profile),
    这里建议在运行配置添加环境变量
    如下,注意:
  • 不要加载windows的环境变量
  • 环境变量除了键值也可以像linux系统一样,使用命令的形式
    如:hadoop classpath
    wsl-环境变量配置

WSL开发系列-idea篇(WSL2配置与结合IDEA2021使用体验(及wsl-gui踩坑))
https://linshenkx.github.io/wsl2_idea2021/
作者
John Doe
发布于
2021年4月13日
许可协议