[Window] WSL Linux Distro 에 IntelliJ Java Project 구성하는 방법

식빵·2024년 7월 7일
0

intellij

목록 보기
16/18

😊 읽기 전 참고사항

이 글은 WSL2 가 설치된 상태고, WSL2 DistroUbuntu-22.04 를 사용한다고
가정하고 글을 작성했습니다. 먼저 2가지를 설치하신 상태에서 보시기 바랍니다.
설치법을 잘 모르시겠으면 제가 이전에 작성한 글을 참조하시기 바랍니다.

여기서 말하는 IntelliJ 는 IntelliJ Ultimate 을 의미합니다.
혹여 IntelliJ Community 버전으로 실습하고자 하시는 분들은 댓글 부탁드립니다.

작은 이미지는 클릭하여 크게 볼 수 있도록 조치했습니다.




✨ 프로젝트 환경 구성법


1. WSL Distro 접속

window 에서 cmd(또는 pwsh)을 실행하고 아래처럼 명령어를 입력하여
자신이 설치한 wsl 기반 linux distro 에 접속합니다.

# 저는 이미 설치한 Ubuntu-22.04 Distro 에 접속하겠습니다.
wsl -d Ubuntu-22.04



2. 기본 유틸리티 설치

2-1. sdkman 설치

sdkmanjava platform 에 사용되는 다양한 도구(ex: jdk, gradle, maven, etc...)들을 쉽게 설치하고, 필요 시에는 간편하게 버전을 변경할 수 있게 해주는 유틸리티입니다.
Linux 환경에서는 아주 유용하죠.

설친법은 https://sdkman.io/install 를 참조해주세요. 아주 쉽답니다.

참고로 아래와 같은 에러문구가 보이면서 설치가 실패할 수 있습니다.

이건 현재 zip, unzip 유틸이 없어서 그렇습니다.
sudo apt update && sudo apt install zip unzip 을 입력해서 설치를 먼저하고,
다시 sdkman 설치법에 따라 설치를 진행해주세요.



2-2. jdk 설치

sdkman 을 통해서 jdk 를 사용해보겠습니다.
먼저 설치할 수 있는 jdk 가 뭐가 있는지 확인하기 위해서 아래처럼 명령어를 입력합니다.

sdk list java

표출되는 목록 중에서 자신이 설치하고 싶은 jdk 를 먼저 선택합니다.
저는 나오는 목록 중에서 temurin jdk (v.21.0.3) 를 사용하겠습니다.

q 를 입력해서 list 화면에서 빠져나오고,
아래와 같이 명령어를 다시 입력합니다.

sdk install java 21.0.3-tem;
# "21.0.3-tem" 는 list 화면에서 가장 오른쪽에 있는 identifier 입니다. 

설치가 모두 완료된 후에 jdk 가 제대로 설치되었는지 확인합니다.

  • java --version : 앞서 설치한 Temurin JDK (v.21) 인 것을 확인할 수 있습니다.
  • which java : 환경변수에 노출된 java 명령어의 경로가 sdkman 이 관리하는 경로임을 확인합니다.



2-3. git 설치

git 은 intellij 가 버전 관리 default tool 로 사용하기 때문에 설치하는 것입니다.
필수적인 건 아닙니다.

sudo apt install git





3. intellij 프로젝트 생성

이제 IntelliJ 로 프로젝트를 WSL 에 설치한 Ubuntu-22.04File System 에 생성해야 합니다. 방법은 아래와 같습니다. (참고로 저는 Spring Boot 프로젝트를 생성해봤습니다)

3-1. IntelliJ 실행 및 프로젝트 생성 시작

  • Location 에서 폴더 아이콘을 클릭하여 경로를 탐색합니다.

3-2. 프로젝트 경로를 WSL Distro 에 맞추기

  • 위처럼 최상위 경로에 저희가 아는 C:, D: 같은 형태가 아닌,
    \\wsl$\<distro 명칭> 경로가 보입니다!
  • 이 경로가 바로 WSL Distro 의 최상위 경로(= /) 에 접근할 수 있는 경로입니다.

  • 저는 Ubuntu-22.04 환경에 /home/<사용자명>/java_project 라는 경로를
    지정하고 OK 를 클릭했습니다.

3-3. 프로젝트 사용 JDK 지정

  • JDK 옆의 Select Box 클릭
  • 펼쳐진 아래 선택란에서 Add Jdk... 클릭

  • 앞서 sdkman 으로 설치한 jdk 의 Home Directory 를 지정합니다.
  • sdkman 의 jdk 설치경로는 일바적으로
    /home/<사용자명>/.sdkman/candidates/java/<설치한 jdk 명칭> 입니다.

3-4. 프로젝트 생성

이후에는 우리가 일반적으로 프로젝트 생성하는 방법과 동일합니다.

  • 빌드툴은 Maven 을 지정했습니다.
  • Java 버전은 Jdk 와 동일하게 21 로 맞췄습니다.

  • 간단한 Spring Boot 기반의 Web 프로젝트를 생성했습니다.

참고:
첫 프로젝트 생성 시에는 mavendependency 들을 Ubuntu 환경에 새로이
import 하기 때문에 프로젝트가 생성되기 까지 시간이 다소 걸립니다.






👏 생성된 프로젝트 테스트


1. jdk, maven wrapper 테스트

alt + f12 를 입력해서 콘솔창을 엽니다.
그리고 나서 아래 명령어들을 차례차례 입력해보시기 바랍니다.

ls -alF # 현재 프로젝트 디렉토리에 대한 정보가 표출된는지 확인
chmod u+x mvnw # maven wrapper 기능 테스트를 위한 file permission 변경
./mvnw --version # maven 이 sdkman 으로 설치한 jdk 와 정상 연동되는지 확인
./mvnw clean package # spring boot 실행 파일(jar) 생성
java -jar ./target/<생성된 스프링부트 jar파일명>.jar # java 를 통한 jar 정상 구동 확인

  • 정상 실행까지 확인했습니다.

이후에 호스트 PC 환경에서 브라우저를 켜고 localhost:8080 접속합니다.
그러면 spring boot web 프로그램이 기본으로 제공하는 에러 페이지가 보입니다.


참고:
(제가 알기로는) Distro 와 Window Host PC 는 127.0.0.1 루프백 ip 를 공유합니다.
음... 이 부분은 제가 추후 더 공부해서 알아내면 따로 글을 작성해보겠습니다.



2. intelliJ 로 실행/테스트

이번에는 intellij 자체적으로 프로젝트를 실행하고, localhost:8080 접근 테스트를 해봅니다.

  • 정상적으로 동작합니다.





👍 알아두면 유용한 것들


1. Window Docker Desktop 연동 🐋

Window Docker Desktop (WSL2 기반) 을 설치했다면,
설치된 Linux Distro 와 호환하여 사용이 가능합니다.

Docker Desktop 을 설치/실행한 후 Distro 에 접속하고 docker 명령어를 사용해보시기 바랍니다.
그러면 설치한 Docker dameon 이 명령어를 받아서 실행되는 것을 확인할 수 있습니다.

이렇게 연동이 되므로 여러분들이 Ubuntu 위에 새로이 Docker 를 설치할 필요가 없습니다!
굉장히 편리하죠?

이 장점은 고스란히 Intellij 프로젝트에서도 효력을 발휘합니다.

예를 들어서
Host PC 에서 docker engine 을 통해 postgresql database 를 하나 띄우고
Distro 환경에서 해당 database 에 곧바로 접근할 수 있습니다.

한번 테스트해볼까요?

1. 먼저 Host PC 에서 docker 명령어를 아래처럼 입력합니다.

docker run --name postgreDb -d -p 5555:5432 -e POSTGRES_PASSWORD=1234 postgres

2. distro 환경에 생성한 프로젝트의 pom.xmlpostgresql dependency 를 하나 더 추가합니다.

<dependency>
  <groupId>org.postgresql</groupId>
  <artifactId>postgresql</artifactId>
</dependency>

3. 그 후에 아래처럼 Java 코드를 짜고 실행해봅시다.

package coding.toast.demo3;

import java.sql.*;

public class Demo3Application {
	
	public static void main(String[] args) {
		try (Connection connection
			     = DriverManager.getConnection(
                 	"jdbc:postgresql://localhost:5555/postgres",
					"postgres", "1234");
		     
             PreparedStatement preparedStatement 
             	= connection.prepareStatement("select now()::text");
		     
             ResultSet rs = preparedStatement.executeQuery()){
			
			while (rs.next()) {
				String timestamp = rs.getString(1);
				System.out.println("timestamp = " + timestamp);
			}
			
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
}

정상 구동되는 것을 확인할 수 있습니다!



2. WSL 프로젝트 생성 후, IntelliJ 가 동작 안하는 경우 😱

가끔 아래 화면이 잘 안 나오는 경우가 있습니다.

이건 Distro 에 생성한 프로젝트가 있는 상태인데 Distro 가 현재 Stopped 상태일 때
종종 발생합니다. Distro 가 현재 Running 상태인지 확인합니다.

그리고 만약 Stopped 상태면 wsl -d <distro 명칭> 을 입력하여 실행시킵니다.
(아래 그림 참고)

  1. wsl -l -v 로 STATE 확인
  2. wsl -d <distro 명칭> 입력하여 접속(= distro 실행)
  3. exit 으로 그냥 나옴. 굳이 계속 접속할 필요 없음
  4. wsl -l -v 로 STATE 재확인

이후 다시 IntelliJ 를 실행하면 정상 구동될 겁니다.

profile
백엔드를 계속 배우고 있는 개발자입니다 😊

0개의 댓글