안녕하세요. 저는 오픈소스 컨설팅 solution-dev-1팀에서 커스텀 개발을 하고 있는 김대현 프로입니다.
오늘 다룰 내용은 제가 처음 아틀라시안 Plugin 개발을 하면서 일반적인 SI 개발과는 다른 점 때문에 초기 개발 환경 설정에 어려움이 있었는데요 그래서 아틀라시안 Plugin개발 경험이 없으신 분들을 위한 환경설정 가이드를 진행하고자 합니다 저는 Mac OS, IntelliJ IDEA 기준으로 예제를 작성했으니 참고하시기 바랍니다.

1. Java, Atlassian SDK 설치

아틀라시안 plugin 개발을 하려면 제일 먼저 해야 하는 게Java 8, Atlassian SDK 이 2개를 설치해야 하는데요 아래 링크를 통해 OS에 맞는 버전을 설치하시면 됩니다.

Java 8 다운로드 URL
https://www.oracle.com/kr/java/technologies/downloads/

Atlassian SDK 다운로드 URL
Mac : https://marketplace.atlassian.com/download/plugins/atlassian-plugin-sdk-mac
Windows : https://marketplace.atlassian.com/download/plugins/atlassian-plugin-sdk-windows

2개 제품을 다 설치했으면 Java Path를 설정해 주셔야 하는데요 터미널을 열어 아래 명령어로 profile 편집모드로 진입합니다.

vi ~/.zshrc

아래 내용처럼 패스를 입력 후 저장해주세요.

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_351.jdk/Contents/Home
export JAVA_HOME

export PATH=$PATH:$JAVA_HOME/bin

PC마다 SHELL, 제품 설치 위치가 다를 수 있습니다. 각자 환경에 맞게 설정해 주시면 됩니다

환경설정이 끝난후 정상적으로 설치 되었는지 확인합니다.

java -version
java version "1.8.0_351"
Java(TM) SE Runtime Environment (build 1.8.0_351-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.351-b10, mixed mode)
atlas-version
ATLAS Version:    8.2.7
ATLAS Home:       /Applications/Atlassian/atlassian-plugin-sdk-8.2.7
ATLAS Scripts:    /Applications/Atlassian/atlassian-plugin-sdk-8.2.7/bin
ATLAS Maven Home: /Applications/Atlassian/atlassian-plugin-sdk-8.2.7/apache-maven-3.5.4
AMPS Version:     8.1.2
--------
Executing: /Applications/Atlassian/atlassian-plugin-sdk-8.2.7/apache-maven-3.5.4/bin/mvn --version -gs /Applications/Atlassian/atlassian-plugin-sdk-8.2.7/apache-maven-3.5.4/conf/settings.xml
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T03:33:14+09:00)
Maven home: /Applications/Atlassian/atlassian-plugin-sdk-8.2.7/apache-maven-3.5.4
Java version: 1.8.0_351, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_351.jdk/Contents/Home/jre
Default locale: ko_KR, platform encoding: UTF-8
OS name: "mac os x", version: "13.3.1", arch: "x86_64", family: "mac"

2. Skeleton 프로젝트 생성

Plugin개발은 아틀라시안 제품에 종속적이다 보니 제품에 맞는 Skeleton 프로젝트 생성 후 그 프로젝트를 수정해서 개발하는 방향으로 진행됩니다. 터미널 창을 열어 아래 명령어를 실행시켜 줍니다.

atlas-create-jira-plugin

예제는 Jira 기준으로 생성한것이고 atlas-create-confluence-plugin, atlas-create-bitbucket-plugin등 원하는 제품기준으로 생성해주시면 됩니다.

Skeleton프로젝트는 Maven프로젝트로 생성되다보니 POM파일에 들어갈 정보를 입력후 프로젝트가 생성되게 됩니다.

Define value for groupId: : kr.osci.test
Define value for artifactId: : testPlugin
Define value for version: 1.0.0-SNAPSHOT: : 1.0.0-SNAPSHOT
Define value for package: kr.osci.test: :
Use OSGi Java Config: (Y/N/y/n) N: : Y
Confirm properties configuration:
groupId: kr.osci.test
artifactId: testPlugin
version: 1.0.0-SNAPSHOT
package: kr.osci.test
use OSGi Java Config: Y
Y: : Y

배치모드로 프로젝트가 생성되며 완료되면 아래와같은 성공메세지를 보실수 있습니다.

IntelliJ 를 실행시켜서 해당 프로젝트를 열어줍니다.

프로젝트를 열면 Maven 설정이 제대로 되어있지 않아 dependencies, maven 실행 탭에 오류가 발생하게 되는데
아래 그림과 같이 Maven Home path 설정을 Atlassian SDK Maven으로 변경하시면 해결됩니다.

프로젝트 오류가 수정되면 아래 명령어로 서버를 실행시켜 줍니다.

atlas-run

성공하면 아래와 같은 메세지를 확인하실 수 있습니다.

나와있는 주소로 웹브라우저로 접속하시면 로그인 화면이 뜨는데요 Username : admin, Password : admin 으로 접속하시면 초기설정(언어, 아바타, 프로젝트)을 하고 메인화면으로 넘어가게 됩니다.

3.디버그 모드 설정

개발을 하다 보면 디버그 모드는 꼭 필요하므로 디버그 모드 설정 방법도 알아보도록 하겠습니다.

Run > Edit Configurations 메뉴로 들어가줍니다.

+ 버튼으로 항목을 추가하고 Remote JVM Debug 를 선택해 주시고

Name 정도만 변경해 주시고 생성해 주시면 됩니다.

생성 후 터미널 창에서 아래 명령어로 Jira 서버를 시작해 줍니다.

atlas-debug 

서버가 실행완료되면 Run > Deubg ‘jira’ 를 실행 시켜줍니다.

디버그 모드가 정상 실행되면 아래와 같은 메세지를 확인 가능합니다.

Connected to the target VM, address: 'localhost:5005', transport: 'socket'

이제 브레이크 포인트를 걸고 디버그가 잘 걸리는지 확인해보시면 됩니다 ~!

4. 로그 설정

Skeleton 프로젝트를 생성하면 Jira 자체 로그 나와도 개발자가 생성한 파일에서 출력한 로그정보는 안 나오게 되는데요 로그 정보도 필수적인 내용이라 추가해 보도록 하겠습니다.

src/main/resources/log4j.properties 파일을 생성해 줍니다.

로그 설정 내용은 각자 상황에 맞게 변경하셔서 사용하시면 됩니다.

파일 생성 후 POM.xml 파일을 열어 build > plugins > plugin > configuration 태그 안에 log4j 파일 위치를 지정해 주면 됩니다.

<build>
    <plugins>
        <plugin>
            <groupId>com.atlassian.maven.plugins</groupId>
            <artifactId>jira-maven-plugin</artifactId>
            <version>${amps.version}</version>
            <extensions>true</extensions>
            <configuration>
                <productVersion>${jira.version}</productVersion>
                <productDataVersion>${jira.version}</productDataVersion>
                <!-- Uncomment to install TestKit backdoor in JIRA. -->
                <!--
                <pluginArtifacts>
                    <pluginArtifact>
                        <groupId>com.atlassian.jira.tests</groupId>
                        <artifactId>jira-testkit-plugin</artifactId>
                        <version>${testkit.version}</version>
                    </pluginArtifact>
                </pluginArtifacts>
                -->
                <enableQuickReload>true</enableQuickReload>

                <!-- See here for an explanation of default instructions: -->
                <!-- https://developer.atlassian.com/docs/advanced-topics/configuration-of-instructions-in-atlassian-plugins -->
                <instructions>
                    <Atlassian-Plugin-Key>${atlassian.plugin.key}</Atlassian-Plugin-Key>

                    <!-- Add package to export here -->
                    <Export-Package>
                        kr.osci.test.api,
                    </Export-Package>

                    <!-- Add package import here -->
                    <Import-Package>
                        org.springframework.osgi.*;resolution:="optional",
                        org.eclipse.gemini.blueprint.*;resolution:="optional",
                        *
                    </Import-Package>

                    <!-- Ensure plugin is spring powered -->
                    <Spring-Context>*</Spring-Context>
                </instructions>
                <log4jProperties>src/main/resources/log4j.properties</log4jProperties>
            </configuration>
        </plugin>
    </plugins>
</build>

마무리

Plugin 개발 환경 구축, Skeleton 프로젝트 생성, 프로젝트 실행, 디버그 모드, 로그 설정 등 기본적인 개발 환경 설정 방법에 대해서 같이 알아봤는데요 단순한 내용이긴 하지만 처음 접하시는 분들에게는 도움이 되실 거라 생각합니다.
처음에 환경설정 및 개발 가이드를 한 포스팅에 같이 올릴 생각이었는데요 그러면 길이 너무 길어질 거 같아서 1부, 2부로 나눠서 진행하려고 합니다. 1부에서는 개발 환경 설정, 2부에서는 간단한 게시판 샘플을 같이 만들면서 테이블 생성, DB CRUD, 페이지 생성/이동 등 전체적인 개발을 다룰 예정입니다. 다음에는 좀 더 좋은 글로 찾아뵙도록 하겠습니다. 부족한 글 읽어 주셔서 감사합니다.

참고자료

개발, 디자인 패턴, 아키텍처에 관심이 많은 꿈 꾸는 개발자입니다.

Leave a Reply

Your email address will not be published. Required fields are marked *

One reply on “아틀라시안 Plugin(DC버전) 개발 가이드 (1부)”