반응형

IntelliJ 플러그인 프로젝트 생성하기

프로젝트 생성

  • IntelliJ -> File -> New -> IDE Plugin

Action 클래스 생성

  • 패키지 우클릭 -> New -> Plugin DevKit -> Action
  • ActionId, Class Name, Name 입력 후 Add to Group에서 원하는 액션 그룹을 선택
  • OK 버튼 클릭시 해당 패키지에 MenuAction 클래스 생성, src/resources/META-INF/plugin.xml 파일에 해당 액션이 추가되었는지 확인.
  • MenuAction 클래스 구현
    package com.example.demoplugin;
    
    import com.intellij.openapi.actionSystem.AnAction;
    import com.intellij.openapi.actionSystem.AnActionEvent;
    import com.intellij.openapi.ui.Messages;
    
    public class MenuAction extends AnAction {
        @Override
        public void actionPerformed(AnActionEvent e) {
            String menu = Messages.showInputDialog("점심 메뉴로 무엇을 먹을까요?", "점심 메뉴 입력", Messages.getQuestionIcon());
            Messages.showMessageDialog(menu, "입력", null);
        }
    }

Action 실행해보기

  • Edit Configurations -> Gradle -> Run Plugin 선택 후 OK 클릭
  • Run 클릭하여 실행
  • 실행하면 새 IntelliJ 창이 뜨는데, 당황하지 말고 아무 프로젝트나 선택해서 열면 된다. 여기서는 현재 작업중이 demo-plugin 프로젝트를 선택.
  • 아무 코드나 열어서 Command + N을 누르면 아래처럼 메뉴가 추가된 것을 확인할 수 있다. (앞에서 MenuAction 클래스 생성시 GenerateGroup으로 선택했고, 해당되는 메뉴는 Command + N이다)
  • 나타나는 팝업창에서 입력 후 확인
  • 결과 확인

빌드 및 배포하기

빌드하여 jar 파일 만들기

  • Build -> Build Project 클릭
  • Build -> Buile Module '프로젝트명' 클릭
  • build/libs/프로젝트명.jar 파일 생성됐는지 확인

jar 파일을 intellij에 설치

  • Settings -> Plugins -> 우측 톱니바퀴 클릭 -> Install Plugin from Disk
  • 위에서 생성한 jar 파일을 선택하면 설치 완료
  • Command + N 눌러 위에서 추가한 플러그인 메뉴가 동작하는지 확인

기타 예제 코드

파일 읽기

~/README.md

Hello World

MenuAction

public class MenuAction extends AnAction {
    @SneakyThrows
    @Override
    public void actionPerformed(AnActionEvent e) {
        Project project = e.getProject();
        File readmeFile = new File(project.getBasePath(), "README.md"); // ~/README.md
        String readmeText = FileUtils.readFileToString(readmeFile, StandardCharsets.UTF_8);
        Messages.showMessageDialog("[내용]\n" + readmeText, "README.md", null);
    }
}

파일 쓰기

MenuAction

public class MenuAction extends AnAction {
    @SneakyThrows
    @Override
    public void actionPerformed(AnActionEvent e) {
        Project project = e.getProject();
        File readmeFile = new File(project.getBasePath(), "README.md"); // ~/README.md
        String readmeText = "Hello World";
        FileUtils.writeStringToFile(readmeFile, readmeText, StandardCharsets.UTF_8);
        Messages.showMessageDialog("[내용]\n" + readmeText, "README.md", null);
    }
}
반응형

'Development > IntelliJ' 카테고리의 다른 글

[IntelliJ] Http Client 사용하기  (0) 2022.08.27
[IntelliJ] 정규식으로 문자열 치환  (0) 2019.03.20

+ Recent posts