Maven에 외부 JAR 추가하기

Maven 중앙 저장소에 없는 JAR 파일을 프로젝트에 추가하는 방법입니다. 상용 라이브러리나 사내 라이브러리를 사용할 때 필요합니다.

언제 사용하나요?

  • 오라클 JDBC 드라이버 등 라이선스 문제로 중앙 저장소에 없는 JAR
  • 사내에서 개발한 공통 라이브러리
  • 서드파티 벤더가 제공한 SDK
  • 오래된 버전의 라이브러리

방법 1: 로컬 저장소에 설치 (권장)

# JAR을 로컬 Maven 저장소에 설치
mvn install:install-file 
    -Dfile=ojdbc8.jar 
    -DgroupId=com.oracle.database.jdbc 
    -DartifactId=ojdbc8 
    -Dversion=21.1.0.0 
    -Dpackaging=jar

# pom.xml에 의존성 추가
<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>21.1.0.0</version>
</dependency>

방법 2: 시스템 스코프 (비권장)

<!-- 프로젝트 내 lib 폴더에 JAR 위치 -->
<dependency>
    <groupId>com.example</groupId>
    <artifactId>custom-lib</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/custom-lib.jar</systemPath>
</dependency>

<!-- 주의: 빌드 시 WAR에 포함 안됨 -->
<!-- 추가 설정 필요 -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <webResources>
            <resource>
                <directory>${project.basedir}/lib</directory>
                <targetPath>WEB-INF/lib</targetPath>
            </resource>
        </webResources>
    </configuration>
</plugin>

방법 3: 프로젝트 내 로컬 저장소

<!-- 프로젝트 내 저장소 정의 -->
<repositories>
    <repository>
        <id>local-repo</id>
        <url>file://${project.basedir}/lib</url>
    </repository>
</repositories>

<!-- lib 폴더 구조:
lib/
└── com/
    └── example/
        └── custom-lib/
            └── 1.0/
                ├── custom-lib-1.0.jar
                └── custom-lib-1.0.pom
-->

<dependency>
    <groupId>com.example</groupId>
    <artifactId>custom-lib</artifactId>
    <version>1.0</version>
</dependency>

방법 4: Nexus/Artifactory 사내 저장소

<!-- settings.xml에 저장소 추가 -->
<servers>
    <server>
        <id>company-repo</id>
        <username>deploy</username>
        <password>password</password>
    </server>
</servers>

<!-- pom.xml에 저장소 정의 -->
<repositories>
    <repository>
        <id>company-repo</id>
        <url>https://nexus.company.com/repository/maven-releases/</url>
    </repository>
</repositories>

<!-- JAR 배포 -->
mvn deploy:deploy-file 
    -Dfile=custom-lib.jar 
    -DrepositoryId=company-repo 
    -Durl=https://nexus.company.com/repository/maven-releases/ 
    -DgroupId=com.company 
    -DartifactId=custom-lib 
    -Dversion=1.0

오라클 드라이버 특별 케이스

<!-- Oracle 19c 이후 Maven Central에서 제공 -->
<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>21.1.0.0</version>
</dependency>

<!-- 오래된 버전은 수동 설치 필요 -->
mvn install:install-file 
    -Dfile=ojdbc6.jar 
    -DgroupId=com.oracle 
    -DartifactId=ojdbc6 
    -Dversion=11.2.0.4 
    -Dpackaging=jar

소스/Javadoc과 함께 설치

mvn install:install-file 
    -Dfile=library.jar 
    -Dsources=library-sources.jar 
    -Djavadoc=library-javadoc.jar 
    -DgroupId=com.example 
    -DartifactId=library 
    -Dversion=1.0 
    -Dpackaging=jar

설치 확인

# 로컬 저장소 확인
ls ~/.m2/repository/com/example/custom-lib/1.0/

# 의존성 트리 확인
mvn dependency:tree

권장 순서

  1. Maven Central에서 검색
  2. 사내 Nexus/Artifactory 사용
  3. 로컬 저장소 설치
  4. system scope (최후 수단)