Gradle WSL project: EAP 5 fails to find files generated by annotation processor : IDEA-264036
Gradle WSL project: EAP 5 fails to find files generated by annotation processor : IDEA-264036
What steps will reproduce the issue? I have a Gradle project in WSL which I imported the other day to EAP 5. This project uses mapstruct and build.gradle has the annotatioprocessor "annotationProcessor "org.mapstruct:mapstruct-processor:1.4.2.Final"". Ever
youtrack.jetbrains.com
이슈 등록된지가 언제인데, 젯브레인 이것들 몇년동안 고칠생각을 안한다.
윈도우의 선택권은 세계제일
윈도우에서 프로젝트를 만들 때 사용할 수 있는 케이스는 크게 4가지다.
- 윈도우 경로에, 윈도우 IDE 사용하기
- WSL 경로에, 윈도우 IDE 사용하기
- WSL 경로에, Remote 모드로 IDE 사용하기
- WSL 경로에, WSLg를 통해 리눅스 GUI IDE 사용하기
예를 들어, VSCode는 자동으로 케이스 1과 3을 지원해서, 프로젝트 위치에 상관없이 거의 동일한 UX를 제공한다.
인텔리제이의 경우, WSL 경로에 있는 프로젝트를 열면 알아서 쉘이나 Gradle 같은걸 WSL 쪽으로 사용해서 리눅스처럼 개발할 수 있다.
만약 100% 리눅스 환경을 원하면 Remote 모드로 접속하면 된다.
WSL | IntelliJ IDEA Documentation
Connect and work with JetBrains Gateway | IntelliJ IDEA Documentation
이렇게 원하는 파일 시스템, 원하는 환경, 자유롭게 선택해서 사용할 수 있는것이 윈도우 + WSL 을 사용하는 최대 강점이다.
제발 제대로 동작해줘~
근데 VSCode와 달리 인텔리제이 Remote 모드로 프로젝트를 열면 뭔가 삐꾸가 나는 경우가 있다. 단순히 원래 쓰던 IDEA 에서 remote 만 접속하는 느낌이 아니라 새로운 remote 용 IDEA 가 깔리기도 하고, 써보면 뭔가 애매..한 포인트에서 애매..한 동작을 한다.
대표적으로 몇몇 군대에서 에디터 폰트 적용이 안먹는다. 그리고 Github 코멘트가 이렇게 나온다..
쓰면 쓸수록 이런 사소 찐빠들이 계속 발견되고. 미묘한 불편함이 많아서 개인적으로는 Remote 모드보다는 그냥 WSL 경로로 키는 게 훨씬 빠르고 편하더라.
이게 윈도우에서 우분투 경로는 `\\wsl.localhost\Ubuntu\home\dldnjs1013\projects\test` 이렇게 매핑되어 있는데
\\wsl.localhost 에 있는 프로젝트는 인텔리제이가 알아서, 인텔리제이 환경을 WSL 에 맞춰준다
gradle 같은것도 당연히 wsl 에 있는 gradle 로 돌아가므로, 결과물은 실제 리눅스 환경에서 개발하는것과 동일하다.
근데 이렇게 키면 터미널, gradle, JVM 기타등등 설정을 WSL 에 바꿔서 동작하는 특성상, 미묘하게 인텔리제이 개발자가 개발 안해둔... 부분에서 몇몇 문제가 터지는데
바로 상대경로 매핑이다.. 리눅스 프로젝트라서 C:\\ 를 사용하지 않는데
상대경로인 ( \home\dldnjs1013\.gradle 뭐 이런 경로) 를 읽을때,
wsl 경로가 아니라 C드라이브에 매핑시켜 버린다
정작 gradle은 wsl 쉘에서 잘만 실행되서 빌드고 테스트고 다 되는데,
인텔리제이 IDE 자체가 모듈을 못찾는 경우가 발생... kapt 가 생성한 클래스 (QClass등) 을 못찾아서 빨간줄을 뿜는 뭐 그런 문제들..
그니까 리눅스 파일시스템이 조금이라도 들어가면
뭘 선택해도 사소한 찐빠가 발생하는 죽음의 이지선다.
얌전히 윈도우 경로를쓰던가, 이런 사소한 찐빠와 평생 함께 살아가던가.. 해야하는데
제일 중요한 툴체인들은 잘만 돌아가서, 인텔리제이 편의성 기능만 소소하게 너프되는 사소한 찐빠라 뭔가 쓰기도 애매하고.. 안쓰기고 애매하고..
보통 이런 인텔리제이 찐빠의 경우
build.gradle.kts 같은걸 수정에서 idea 가 인식하도록 하드코딩해두거나 매번 지정하고 그런 노가다를 해줘야 하는데,
뒤지게 귀찮은건 둘째 치고, 팀 프로젝트의 경우 나 하나 때문에 build.gradle 을 수정하기도좀 그렇다.
그리고 멀티모듈 프로젝트면 한땀 한땀 다 해줘야되는것도 고역..
그래서 진짜 별의 별 방법을 다 써봣는데 못 고쳣고, 아마 젯브레인 측에서도 평생 고칠 생각안하는듯..
모로가도 서울만 가면 된다
근데 어차피 인텔리제이가 그 경로파일 인식할 수만 있으면 되는거 아니냐?
해서 해결한 방법이
mklink /D C:\home \\wsl.localhost\Ubuntu\home
요로코롬 C\home 을 wsl home 으로 심볼릭링크 만들어서 해결..
뭔가 뭔가 싶지만.. 아무튼 동작함..
근데 바로는 안되고 한번 껏다가 켜야하던데 뭔가 인텔리제이가 리프래시가 바로 안되는듯..
이렇게 까지 하는 이유가..?
요즘 언어들은 모두 멀티플랫폼이라서 그냥 윈도우에서 프로젝트 만들어 실행하는 게 편하다. 게다가 요즘은 개발자 드라이브라고 해서 Refs 파일시스템 경로에 프로젝트를 두면 속도도 빠르고 좋다.
원래는 보통 이렇게 사용했었다.
- 프로젝트: 윈도우에서 작업하다가, OS 의존적인 부분(예: New Line 문제나 기타 OS 차이 확인 등)이 필요할 때만 리눅스로 옮겨 테스트.
- 인프라 환경(Terraform, 쿠배, AWS 등): WSL을 메인으로 사용.
그런데, 쉘을 건드리는 일이 많거나 팀 내 버전을 엄격하게 맞추기 위해 요즘은 전부 WSL을 사용 중이다. 절대 내가 힙스터라서 그런거 아님
VSCode는 진짜 완벽에 가까운 Remote 환경을 제공하는 반면, 인텔리제이는 찐빠가 너무 많다.
'프로그래밍 기술 노트 > Windows' 카테고리의 다른 글
[Windows/초 미세 팁] 파일 익스플로러 주소창으로 Visual Studio Code 실행 (0) | 2021.05.03 |
---|---|
[Windows] 화면녹화 (0) | 2020.08.13 |
[Windows] Windows Terminal 와 화면 분할 (0) | 2020.08.13 |
[Windows] 클립보드 사용하기 (0) | 2020.08.13 |
[Windows] 화면 캡쳐 단축키 (0) | 2020.08.13 |