스프링부트를 사용한 프로젝트를 하다보면 추가한 외부 라이브러리를 참고해야 할 일이 많다.
인텔리제이를 사용한다면, 반환값이나 파라미터, 간단한 내부 프로세스 정도가 궁금할 때는 해당 클래스나 메서드를 타고 들어가면 바로 볼 수가 있다. 더구나 이런 외부 라이브러리의 경우 각 클래스별, 메서드별로 javadoc을 사용하여 주석을 상세히 달아놓아서, 웬만한 경우엔 이것만 보고도 바로 그 라이브러리를 사용할 수 있을 정도이다.
이러한 주석 덕에 위 같은 방법을 이전부터 종종 사용했지만, 어느 순간부터 이런 주석이 보이지 않았다. 대신에 외부 라이브러리 파일을 열어보면 맨 위에 Decompiled .class file, bytecode version: ... 이라는 메시지가 뜨기 시작했다.

찾아보니 이는 인텔리제이가 Java Bytecode Decompiler 라는 도구를 사용해, 이미 컴파일된 파일 (.class)을 자바 코드로 디컴파일해서 보여주고 있었던 것이다.
그래서 이전에 했던 프로젝트들을 찾아봤더니 모두 자바 소스코드(.java)를 직접 다운로드 받아서 그 파일을 보여주고 있었다.
물론 온전한 소스코드를 보고 싶을 때마다 위 사진 오른쪽 상단의 Download Sources를 눌러도 되겠지만, 필요할 때마다 일일히 그렇게 하기도 너무 번거로울 것 같아 한 번에 모든 외부 라이브러리의 소스 파일을 다운받을 수 있는 방법을 찾아보았다.
보통 Gradle 을 통해 스프링부트 프로젝트를 빌드해 사용했기 때문에, build.grdle에 어떤 설정 정보를 넣어주면 디펜던시를 추가할 때 클래스 파일 뿐만 아니라 소스 코드도 같이 다운로드할 수 있지 않을까 생각했다. 실제로 다음과 같은 설정 정보를 추가하면 된다는 글을 찾아볼 수 있었다.
plugins {
...
id 'idea'
}
idea {
module {
downloadSources = true
}
}
이후로는 아래 사진처럼 모든 소스 파일이 전부 다운로드되었고, 내가 원하는 주석까지 잘 보여주었다.


여담으로 소스 파일이든 클래스 파일이든 로컬 상에서 다운받은 위치를 알고 싶으면 사진처럼 Open in > Path Popup 를 클릭하면 된다.
예전에 스프링부트 프로젝트를 생성할 때는 별다른 설정 없이도 소스 파일을 다운받았었던 것 같은데, 왜 바뀐 것인지는 잘 모르겠다.
앞으로는 이 방법을 통해 소스 파일도 같이 다운받으면 될 것 같다.