IDE

IDE (IDEs)

Eclipse와 IntelliJ IDEA에서 HBase 개발 환경을 설정하는 방법을 살펴볼게요. 코드 포맷터, Git 플러그인, Maven 통합과 권장 플러그인을 다뤄요.

출처: 문서

본문

Eclipse

코드 포맷팅 (Code Formatting)

dev-support/ 폴더 아래에 hbase_eclipse_formatter.xml이 있어요. HBase 코드를 편집할 때 이 포맷터를 eclipse에 적용하고 사용하는 것을 권장해요.

Preferences->Java->Code Style->Formatter->Import로 이동해 xml 파일을 로드해 주세요. Preferences->Java->Editor->Save Actions로 이동해 'Format source code'와 'Format edited lines'가 선택되어 있는지 확인해 주세요.

자동 포맷팅 외에도 Code Formatting Conventions에 설명된 스타일 지침을 따르는지 확인해 주세요.

Eclipse Git 플러그인

git으로 프로젝트를 클론했다면 Git 플러그인(EGit)을 다운로드해 설치해 주세요. 로컬 git 저장소에 연결하면(Git Repositories 창을 통해) 파일 수정 이력 보기, 패치 생성 등을 할 수 있어요.

m2eclipse를 사용한 Eclipse에서 HBase 프로젝트 설정

가장 쉬운 방법은 Eclipse용 m2eclipse 플러그인을 사용하는 거예요. Eclipse Indigo 이상에는 m2eclipse가 포함되어 있거나, http://www.eclipse.org/m2e/에서 다운로드할 수 있어요. Eclipse에 Maven 통합을 제공하며, Eclipse 안에서 직접 Maven 명령을 사용해 프로젝트를 컴파일하고 테스트할 수도 있어요.

프로젝트를 임포트하려면 클릭하고 HBase 루트 디렉터리를 선택해 주세요. m2eclipse가 모든 hbase 모듈을 찾아줘요.

m2eclipse를 설치하고 작업 공간에 HBase를 임포트했다면 eclipse Build Path를 고치기 위해 다음을 해 주세요.

  • target 폴더 제거
  • target/generated-sources/java 폴더 추가
  • Build Path에서 src/main/resources와 src/test/resources의 제외(exclusions)를 제거해 콘솔의 다음 같은 오류 메시지를 피해 주세요. Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.6:run (default) on project hbase: 'An Ant BuildException has occurred: Replace: source file .../target/classes/hbase-default.xml doesn't exist' 이렇게 하면 eclipse 빌드 주기도 줄어들어 개발할 때 더 수월해요.

커맨드 라인으로 Eclipse에서 HBase 프로젝트 설정

m2eclipse를 사용하는 대신 커맨드 라인에서 Eclipse 파일을 생성할 수 있어요.

  • 먼저 다음 명령을 실행해 HBase를 빌드해 주세요. 한 번만 하면 돼요. mvn clean install -DskipTests
  • Eclipse를 닫고, 로컬 HBase 프로젝트 디렉터리에서 터미널로 다음 명령을 실행해 새 .project와 .classpath 파일을 생성해 주세요. mvn eclipse:eclipse
  • Eclipse를 다시 열고 HBase 디렉터리의 .project 파일을 작업 공간으로 임포트해 주세요.

Maven Classpath 변수

프로젝트에는 $M2_REPO classpath 변수가 설정되어야 해요. 이는 로컬 Maven 저장소로 설정해야 하며, 보통 ~/.m2/repository예요.

이 classpath 변수가 구성되지 않으면 Eclipse에서 다음과 같은 컴파일 오류를 보게 돼요.

Description        Resource        Path        Location        Type
The project cannot be built until build path errors are resolved        hbase                Unknown        Java Problem
Unbound classpath variable: 'M2_REPO/asm/asm/3.1/asm-3.1.jar' in project 'hbase'        hbase                Build path        Build Path Problem
Unbound classpath variable: 'M2_REPO/com/google/guava/guava/r09/guava-r09.jar' in project 'hbase'        hbase                Build path        Build Path Problem
Unbound classpath variable: 'M2_REPO/com/google/protobuf/protobuf-java/2.3.0/protobuf-java-2.3.0.jar' in project 'hbase'        hbase                Build path        Build Path Problem Unbound classpath variable:

Eclipse 알려진 이슈 (Eclipse Known Issues)

Eclipse는 현재 Bytes.java에 대해 불평할 거예요. 이 오류를 끌 수는 없어요.

Description        Resource        Path        Location        Type
Access restriction: The method arrayBaseOffset(Class) from the type Unsafe is not accessible due to restriction on required library /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar        Bytes.java        /hbase/src/main/java/org/apache/hadoop/hbase/util        line 1061        Java Problem
Access restriction: The method arrayIndexScale(Class) from the type Unsafe is not accessible due to restriction on required library /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar        Bytes.java        /hbase/src/main/java/org/apache/hadoop/hbase/util        line 1064        Java Problem
Access restriction: The method getLong(Object, long) from the type Unsafe is not accessible due to restriction on required library /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar        Bytes.java        /hbase/src/main/java/org/apache/hadoop/hbase/util        line 1111        Java Problem

Eclipse - 자세한 정보

Windows에서 HBase 개발을 위한 Eclipse 설정에 대한 추가 정보는 Michael Morello의 블로그를 참고해 주세요.

IntelliJ IDEA

Java 프로젝트를 Maven으로 빌드하는 데 필요한 플러그인이 있는 IntelliJ IDEA 설치 주변에 기능적인 개발 환경을 구축할 수 있어요.

  • File > New > "Project from Existing Sources..." 또는 "Project From Version Control.." 중 하나를 사용해 주세요.
  • IntelliJ 버전에 따라 Maven을 "project" 또는 "model" 유형으로 선택해야 할 수 있어요.

다음 플러그인이 권장돼요.

  • Maven, 번들 제공. 이는 IntelliJ가 의존성을 해석하고 프로젝트 구조를 인식하게 해줘요.
  • EditorConfig, 번들 제공. 이는 HBASE-23234 이상이 있는 브랜치에서 사용할 수 있는 .editorconfig 파일에서 찾은 프로젝트 공백 설정을 적용해요.
  • Checkstyle-IDEA. hbase-checkstyle/src/main/resources/hbase/checkstyle.xml 아래에 있는 구성 파일에 맞춰 구성해 주세요. (Intellij checkstyle 플러그인이 제안된 hbase checkstyle.xml을 파싱하는 데 불평한다면, 플러그인의 버전 팝업 메뉴가 hbase checkstyle 버전과 일치하는지 확인해 주세요. 현재 checkstyle 버전은 pom.xml에서 속성으로 찾을 수 있어요. 이 플러그인은 IDE에서 스타일 오류를 강조 표시해, pre-commit 과정에서 표시되기 전에 고칠 수 있게 해줘요.
  • Protobuf Support. HBase는 직렬화가 필요한 여러 곳에서 Protocol Buffers를 사용해요. 이 플러그인은 그러한 객체 정의를 편집할 때 유용해요.
  • MDX. HBase는 프로젝트 문서를 빌드하는 데 MDX(그냥 확장된 markdown)를 사용해요. 이 플러그인은 이 책을 편집할 때 유용해요.

다른 IDE (Other IDEs)

HBase로 개발하고 싶은 다른 환경이 있다면, 여기에 설정 과정을 문서화하는 것을 고려해 주세요.

더 알아보기 (Learn more)

HBase 빌드 방법과 개발 지침은 Building Apache HBase와 Developer Guidelines 문서를 보시길 권해요.