최근에 주변에 보면 주변 개발자들은 VSCode 혹은 JetBrain사의 IDE 두가지의 IDE를 많이 쓰는 것으로 보인다. 두가지 IDE 모두 plugin을 지원을 한다. 꽤나 많은 plugin들이 있지만, 나만 쓰는 혹은 우리회사만 쓰는 규칙에 딱 맞는 플러그인을 찾기에는 힘들 때가 있다.
그렇다면 플러그인을 직접 제작하면 어떨까? 해서 작성해본다. 개인적으로 WebStrom을 주 IDE로 쓰고 있다.
프로젝트 생성
나는 WebStrom 플러그인을 제작하고자 하기 때문에 IntelliJ Community버전을 설치했다. 또한 java11이상이 필요하여 OpenJDK 17.0.3을 설치하여 제작을 하였다.
프로젝트 생성은 매우 간단하다.
그저 새로운 프로젝트를 생성하면서 IDE Plugin을 클릭만 해주면 적절하게 작성을 다 해준다.
프로젝트를 만들게 되면 가장 먼저 살펴보면 좋을만한 내용은 META-INF/plugin.xml 파일이다.
<!-- Plugin Configuration File. Read more: https://plugins.jetbrains.com/docs/intellij/plugin-configuration-file.html -->
<idea-plugin>
<!-- 플러그인의 고유 식별자입니다. FQN이어야 합니다. 플러그인 버전 간에 변경할 수 없습니다. -->
<id>com.example.demo</id>
<!-- 공개 플러그인 이름은 Title Case로 작성해야 합니다.
Guidelines: https://plugins.jetbrains.com/docs/marketplace/plugin-overview-page.html#plugin-name -->
<name>Demo</name>
<!-- 플러그인 페이지에 표시되는 표시된 공급업체 이름 또는 조직 ID입니다. -->
<vendor email="sejinjja@gmail.com" url="https://sejiwork.blogspot.com/">sejiwork</vendor>
<!-- 플러그인 페이지 및 IDE 플러그인 관리자에 표시되는 플러그인에 대한 설명입니다.
<![CDATA[ ]]> 태그 안에 간단한 HTML 요소(텍스트 서식, 단락 및 목록)를 추가할 수 있습니다.
Guidelines: https://plugins.jetbrains.com/docs/marketplace/plugin-overview-page.html#plugin-description -->
<description><![CDATA[
Hello this plugin is just test plugin.<br>
<em>maybe useless</em>
]]></description>
<!-- 제품 및 플러그인 호환성 요구 사항.
Read more: https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.html -->
<depends>com.intellij.modules.platform</depends>
<!-- 플러그인에 의해 정의된 확장 지점.
Read more: https://plugins.jetbrains.com/docs/intellij/plugin-extension-points.html
https://plugins.jetbrains.com/docs/intellij/extension-point-list.html#project-system-pluginxml -->
<extensions defaultExtensionNs="com.intellij">
</extensions>
</idea-plugin>
위의 내용은 일부분 구글 번역기를 돌려본 내용이다. 뭐 나머지 내용은 적당히 알아보겠지만, extensions의 내용은 잘 모르겠다. 적당히 내용을 살펴보면 무엇을 위한 plugin을 만들것인지에 대한 내용인 것 같고, 특정 플러그인에 대해서 확장하는 것도 가능 한 것처럼 보인다.
VSCode 등 다른 계열의 IDE도 확장 가능한지는 아직은 알 순 없다.
Action 만들기
액션은 위처럼 만들면 된다. 나는 코드와 관련된 플러그인을 제작 예정이므로 Code 메뉴에 등록 되도록 위처럼 작성 하였다.
그리고 나서 META-INF/plugin.xml을 살펴 보자.
<!-- Plugin Configuration File. Read more: https://plugins.jetbrains.com/docs/intellij/plugin-configuration-file.html -->
<idea-plugin>
... 생략 ...
<actions>
<action id="Demo" class="com.example.demo.Demo" text="Demo">
<add-to-group group-id="CodeMenu" anchor="first"/>
</action>
</actions>
</idea-plugin>
위 처럼 내가 생성한 action이 정의 되어있다.
Demo 클래스를 아래와 같이 작성하자.
package com.example.demo;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.ui.Messages;
public class Demo extends AnAction {
@Override
public void actionPerformed(AnActionEvent e) {
Messages.showInfoMessage("Hello world!", "Hello?");
}
}
그저 Hello world! 를 알럿으로 띄워주는 action을 정의 하였다.
실행 하기!
댓글
댓글 쓰기