IDE & Apps/IntelliJ Idea

깃털보다 가벼운 인텔리J 아이디어(IntelliJ Idea) 팁 10 - File & Code Template

Figo Kim 2016. 5. 20. 15:57
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

오늘도 가볍게, 진심 큰 도움이 안되는 팁 하나 공유하고자 합니다. 


어찌보면 인텔리J만의 독특한 기능도 아니고, 거의 모든 IDE에 포함되어 있는 기능이기도 한, File Template기능에 대해서 소개하고자 합니다.


어쩌면 진심 제목에 충실한 내용이라 할 수 있겠습니다. 


File Template : 특정 파일을 새로 생성할 때 기본적으로 포함되어질 구성을 만들고, 그 구성이 파일 생성시마다 적용되도록 하는 기능입니다. 


설정화면 

윈도우 & 리눅스 : File > Settings > File and Code Templates

맥 : Preferences > File and Code Templates


설정 화면은 아래와 같습니다.


설정화면에는 총 4개의 탭이 존재합니다.


  • Files : 파일 템플릿의 종류를 보여줍니다.
  • Includes : 파일템플릿에서 사용될 수 있는 재사용 가능한 템플릿 조각이라고 보시면 됩니다. 
  • Codes : code-snippets들의 목록입니다.
  • Others : 어플리케이션 또는 프래임워크와 연관이 있는 템플릿 목록입니다. 편집은 가능하나 추가 생성은 할 수 없습니다.
기본적으로 Intellij IDea에서 사용하는 템플릿 문법은 Velocity입니다. (참고로 본인도 Velocity 문법에 대해서는 잘 모릅니다. ㅠㅠ) 하지만 기본적인 템플릿 편집하는데 복잡한 문법을 쓸 일이 거의(?) 없는 만큼, 큰 부담은 없을 듯 싶습니다.)

아래는 본인이 주로 사용하는 Class 파일에 대한 템플릿입니다.


주목할 부분은 아마도 두번째 줄이 아닐까 합니다.

#parse 문법은 Include되는 다른 템플릿을 언급하는 부분입니다.


기본 Class의 템플릿에서 #parse("File Header.java")라고 되어 있는데, 이는 Include 탭에 정의된 File Header.java라는 이름의 템플릿 조각을 Include하겠다는 말입니다.



Include탭을 보면 두개의 템플릿 목록이 있고, 그중에 File Header라는 템플릿을 확인하실 수 있습니다.

오른쪽 하단부 (빨간색) 박스에 보면 템플릿에서 사용할 수 있는 일부 변수가 미리 정의되어 있습니다.


뒤 변수에 추가해서 PRODUCT_NAME이라는 변수를 통해서 IDE이름을 사용하실 수 있습니다.


기본 변수 이외에 추가로 변수를 정의하고자 한다면, #set ( $variable_name = value ) 형태로 사용하실 수 있습니다.

일단 위와같이 템플릿을 설정 후 적용한 후, 신규 파일을 생성해보면 아래와 같이 파일이 생성된것을 확인하실 수 있습니다.



새로운 템플릿을 만들고 싶으시면 탭 위에 있는 + 아이콘을 클릭하신 후, 새로이 생성하실 수 있습니다.


문제는 이렇게 하면,처음부터 다 작성해야 한다는 점입니다. 귀찮죠..


개인적으로는 이 방법 보다는 기존 파일에서 템플릿을 만드는 방법이 좋다고 생각이 됩니다.


예를 들어 Spring controller 템플릿으로 쓰일 클래스 파일을 간단하게 만든 후, Tools --> Save File as Template를 선택하면 아래와 같이 설정화면이 나타납니다.



템플릿 파일명을 지정해주시면 되고, 만약에 파일 생성시마다 동적으로 그 값을 지정하고 싶으면 ${variable_name} 형태로 변수만 선언해두시면 됩니다.

위 예시에서 보시면 조금 이상하게 보여지는게 바로 class명에 대한 ${NAME}변수 부분입니다.

사실 MyTestController라는 파일을 생성하기 위해서 사용된 템플릿은 아래와 같습니다.

추측해보자면, 템플릿을 통해서 생성된 파일을가지고 또 다른 템플릿을 만들게 될 경우, include되는 부분을 제외하고는 템플릿 파라미터 부분이 유지된다고 볼 수 있을 듯 싶습니다.



위 예시의 경우, mappingName값에 대해서 파일 생성전에 물어보게 됩니다.

물론 파일 생성시 아래와같이 신규로 생성한 템플릿 명을 목록에서 확인하실 수 있습니다.


커스텀 템플릿인 SpringController를 선택하면 아래와 같이 두개의 입력폼을 가지는 창이 나타납니다.

하나는 파일명이고 나머지 하나는 앞서 설정한 mappingName 변수에 대한 값이라고 보시면 됩니다.

아래와 같이 파일이 생성된 것을 확인하실 수 있습니다.


이상 세상 어느 IDE에나 다 있는 템플릿 기능에 대한 가벼운 팁(?)이었습니다.~!!!