많은 개발자들이 맥을 사용한다.
하지만 극강의 효율충인 나는, 맥북의 비싼 비용과 윈도우에서는 잘되지만 맥에서는 잘되지 않는 다양한 프로그램들 때문에 윈도우를 선호한다.
But.. 개발할 때 만큼은 Unix계열의 OS에 대한 필요성이 많이 느껴진다. 별에 별 에러를 실제로도 많이 겪었었다. 환경변수 길이가 조금 길다고 명령어가 실행이 안된 적도 있고, 도커와 연동해서 개발할 때에도 복잡한 추가 설정들을 엄~청나게 해줬어야 했다.
But! WSL이 등장하면서 이런 문제들은 말끔하게 사라졌다 😎😎😎
그리하여, 이번 글에서는 IntelliJ에서 wsl을 사용하는 방법에 대해서 알아보겠다.
윈도우 컴퓨터에 WSL2가 반드시 설치되어 있어야한다. 설치법은 여기를 참고하자.
java는 open jdk 11버전을 설치하겠다.
(선호하는 버전 및 라이센스가 있으면 해당 버전을 이용하면 됨)
wsl에서 아래의 명령어들을 순차적으로 실행한다.
sudo apt update
sudo apt install openjdk-11-jdk
설치한 후에 java버전을 체크해서 정상적으로 설치됐는지 확인하자.
java --version
정상 설치 됐다면 이렇게 버전이 출력된다.
인텔리제이는 윈도우용 인텔리제이를 설치하면 된다. easy 😎
설치는 여기서
인텔리제이를 실행하고, New project를 누르면 이렇게 창이 뜬다. 그리고 jdk는 wsl에 설치된 jdk를 설정해주면 된다.
(intelliJ가 알아서 detect해서 셀렉박스에 보여줌 😁)
프로젝트를 생성 > File > Settings > 'terminal'검색
위의 경로를 따라가면 이렇게 창이 뜨는데, 여기서 shell path를 wsl.exe
로 설정해준다.
File > open 에 들어가면 wsl의 경로가 뜬다.
wsl에서 내 코드가 있는 곳을 찾아서 열어주면 된다.
(글을 쓰는 와중에 업데이트 했더니 갑자기 한글팩이 적용됨)
File > settings > 'gradle'검색 후 아래와 같이 JVM을 wsl에 설치된 java로 설정한다.
아래와 같은 메세지가 뜨면서 프로그램이 빌드 또는 실행이 안되는 경우가 있다. 이럴땐 메세지에 나와 있는 대로 여기로 이동해서 하라는대로 조치를 취해주면 된다.
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow
Get-NetFirewallProfile -Name Public | Get-NetFirewallRule | where DisplayName -ILike "IntelliJ IDEA*" | Disable-NetFirewallRule
🤔 첫번째 명령어가 에러가 나면서 실행되지 않는다면?
1.Get-NetAdapter -IncludeHidden
명령어를 Powershell에 실행해서 WSL 관련 Ethernet정보를 찾아낸다.
2. "vEthernet (WSL)"대신 정확한 Ethernet 이름을 입력해준다.
3. 아니면, 1, 2번 과정 대신 아래와 같이 이름에 Wildcard를 추가해서 명령어를 실행해보자.New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL*" -Action Allow
섹션의 제목 그대로, Window defender가 활성화 되어 있으면, Intellij에서 코드를 Indexing할 때, IntelliJ가 멈춰버리는 현상이 발생한다. 이럴 때는 아래와 같이 조치를 취해주도록 하자.
위의 설정들을 마치고 예시로 Spring앱을 실행해보면 아래와 같이 정상적으로 동작하는 것을 볼 수 있다.
간단하면서도 막 간단하지만은 않았던 세팅이였다. ㅎㅎ