BitMEX API 연동을 위한 Maven pom.xml 설정 예제 (XChange + Lombok + SLF4J)
자바로 암호화폐 거래소(BitMEX) API에 연동하려면
가장 먼저 Maven 프로젝트 설정(pom.xml)이 제대로 잡혀 있어야 합니다.
이 글에서는 org.knowm.xchange 라이브러리를 활용해 BitMEX에 연동하는
실전 pom.xml 예제를 분석하고, 각 의존성이 어떤 역할을 하는지 자세히 설명합니다.
1. 프로젝트 개요 및 pom.xml 전체 구조
이 예제는 BitMEX 거래소 시세/주문 연동을 목표로 한
bitmexXchange라는 Maven 프로젝트의 pom.xml입니다.
groupId:bitmexXchangeartifactId:bitmexXchangeversion:0.0.1-SNAPSHOT(개발 중인 초기 버전)build: 소스 디렉터리와 컴파일러 플러그인 설정dependencies: XChange(BitMEX), Lombok, SLF4J, commons-lang3 등
즉, 이 pom.xml 하나로 BitMEX API 연동 + 로그 출력 + 유틸리티 사용을 위한 기본적인 개발 환경이 갖춰지도록 설계되어 있습니다.
2. 빌드 설정: maven-compiler-plugin과 JDK 버전
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
빌드 섹션에서는 maven-compiler-plugin을 사용해 JDK 1.8 기준으로 컴파일이 되도록 지정하고 있습니다.
<source>1.8</source>: 소스 코드의 문법 버전 (Java 8)<target>1.8</target>: 생성되는 바이트코드의 호환 버전<sourceDirectory>src</sourceDirectory>: 소스 루트 디렉터리를 기본값(src/main/java)이 아닌src로 사용
만약 일반적인 Maven 구조(src/main/java)를 사용한다면
sourceDirectory는 생략 가능하지만,
레거시 프로젝트나 커스텀 구조에서는 이렇게 명시적으로 지정해 줍니다.
3. XChange BitMEX 연동 관련 의존성
이 프로젝트의 핵심은 XChange 라이브러리를 이용해 BitMEX와 통신하는 것입니다. 관련 의존성은 다음과 같습니다.
<dependency>
<groupId>org.knowm.xchange</groupId>
<artifactId>xchange-bitcoincharts</artifactId>
<version>4.4.1</version>
</dependency>
<dependency>
<groupId>org.knowm.xchange</groupId>
<artifactId>xchange-core</artifactId>
<version>4.4.1</version>
</dependency>
<dependency>
<groupId>org.knowm.xchange</groupId>
<artifactId>xchange-bitmex</artifactId>
<version>4.4.1</version>
</dependency>
xchange-coreXChange의 공통 코어 모듈로, 거래소 공통 인터페이스, DTO, 유틸을 포함합니다.xchange-bitmexBitMEX 전용 구현체로, BitMEX의 REST API, 마켓 데이터, 주문 체결 등을 처리하는 모듈입니다.xchange-bitcoincharts비트코인 차트 관련 데이터 제공자 연동 모듈로, 시세/차트 데이터를 활용하고 싶을 때 함께 사용합니다.
이 세 가지를 함께 추가해 두면, 코어 인터페이스 + BitMEX 구현 + 차트 데이터까지 한 번에 사용할 수 있는 구조가 됩니다.
4. 기타 공통 유틸/로그 관련 라이브러리
4-1. iBatis (ibatis-common)
<dependency>
<groupId>com.ibatis</groupId>
<artifactId>ibatis-common</artifactId>
<version>1.3.1</version>
</dependency>
오래된 레거시 프로젝트에서 여전히 볼 수 있는 iBatis 공통 모듈입니다. 간단한 DAO 레이어나 SQL 매핑에 사용될 수 있으며, 최근 MyBatis로 넘어간 경우에도 기존 코드 호환 때문에 남아 있는 경우가 많습니다.
4-2. Lombok
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
Getter/Setter, Builder, 로그 필드 등을 자동 생성해 주는 Lombok입니다.
<scope>provided</scope>로 설정되어 있어,
컴파일 시에는 필요하지만 실제 런타임 배포물에는 포함되지 않도록 되어 있습니다.
4-3. Google Collections
<dependency>
<groupId>com.google.collections</groupId>
<artifactId>google-collections</artifactId>
<version>1.0-rc2</version>
</dependency>
Guava의 전신인 Google Collections 라이브러리입니다. 컬렉션 유틸, 불변 컬렉션 등 고급 컬렉션 기능을 제공하지만, 최근에는 Guava를 사용하는 것이 일반적입니다. 레거시 코드 호환 목적 또는 기존 유틸 의존성이 있을 때 사용합니다.
4-4. Apache Commons Lang3
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
문자열, 숫자, 날짜 처리 등 자바 표준 라이브러리에서 부족한 유틸 기능을 채워주는
필수급 라이브러리입니다.
StringUtils, EqualsBuilder, ToStringBuilder 등은
거의 표준처럼 쓰입니다.
4-5. SLF4J 로그 설정
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.4</version>
</dependency>
slf4j-api: 로그 인터페이스 (LoggerFactory, Logger 등)slf4j-simple: 콘솔에 간단하게 로그를 찍어주는 구현체
XChange나 기타 라이브러리에서 SLF4J를 통해 로그를 출력하므로, slf4j-api + 구현체(slf4j-simple) 세트를 같이 넣어두면 바로 콘솔 로그를 확인할 수 있습니다. 나중에 Logback, Log4j2 등으로 바꾸고 싶다면 구현체만 교체하면 됩니다.
5. BitMEX 연동용 pom.xml 전체 코드 정리
마지막으로, 위에서 설명한 내용을 포함한 전체 pom.xml 예제를 한 번에 정리합니다.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>bitmexXchange</groupId>
<artifactId>bitmexXchange</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.knowm.xchange</groupId>
<artifactId>xchange-bitcoincharts</artifactId>
<version>4.4.1</version>
</dependency>
<dependency>
<groupId>org.knowm.xchange</groupId>
<artifactId>xchange-core</artifactId>
<version>4.4.1</version>
</dependency>
<dependency>
<groupId>org.knowm.xchange</groupId>
<artifactId>xchange-bitmex</artifactId>
<version>4.4.1</version>
</dependency>
<dependency>
<groupId>com.ibatis</groupId>
<artifactId>ibatis-common</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.collections</groupId>
<artifactId>google-collections</artifactId>
<version>1.0-rc2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.4</version>
</dependency>
</dependencies>
</project>
이 설정 그대로 Maven 프로젝트를 생성하면,
BitMEX API 연동, 로그 출력, 유틸리티 활용을 위한 기본 골격이 완성됩니다.
이후에는 XChange의 Exchange, MarketDataService, TradeService 등을 사용해
실제 시세 조회·주문 로직을 구현해 나가면 됩니다.
댓글
댓글 쓰기