Google AdSense (text)

hidden logo stop

Moving

거지 같은 이글루스 광고노출 정책이 싫어서,
새 보금자리(http://blog.leocat.kr/)로 이사감.

[Maven] jar 파일에 dependency 포함시키기 Computer & Program

Maven 프로젝트에서 dependency로 추가된 라이브러리들은 실행할 때 필요하다. WAR 프로젝트는 WEB-INF 아래로 필요한 것들을 넣어주지만, JAR 프로젝트는 그렇지 않다. 실행하기 위해서는 dependency로 추가된 라이브러리를 모두 CLASS_PATH에 넣어주어야 한다.

하지만 dependency도 많은데 그 dependency의 dependency도 있고 추가해 줄 라이브러리를 모두 찾기란 쉽지 않다. (아니 귀찮다. 정말로.. 너무 많아 TㅅT) 이럴 때 쓸 수 있는 방법이 2가지 있다.


1. dependency를 따로 뽑아서 폴더에 담기
Maven Dependency Plugindependency:copy-dependencies Goal을 실행하면 target 경로 아래에 dependency라는 폴더를 생성하고 그 아래에 필요한 모든 라이브러리 파일을 복사해 준다.
mvn dependency:copy-dependencies



2. 생성된 JAR 파일에 dependency 넣기
위의 방법은 라이브러리 파일들이 별도의 경로에 jar 파일로 복사되지만, 이 방법은 생성된는 jar 파일 내에 라이브러리의 모든 내용을 넣는 형태로 생성된다. 때문에 dependency가 포함된 jar 파일 1개만 있어도 실행이 가능하다. (하지만 그만큼 용량은 어마어마해 진다. -ㅅ-)

pom.xml 파일에 아래와 같이 Assembly 플러그인 내용을 추가한다.
<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2.1</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>


그리고 Maven Assembly Plugin을 실행시키면 target 경로에 jar 파일이 2개 생성된다. 하나는 dependency가 없는 파일이고, 하나는 dependency가 포함된 파일이다.
mvn assembly:assembly

파일 이름을 보면 알겠지만, "-jar-with-dependencies"가 붙어 있는 파일이 dependency가 포함된 파일이다. 이 파일만 있으면 별도로 라이브러리를 가지고 다니지 않아도 된다.

abc-0.0.1-SNAPSHOT.jar
abc-0.0.1-SNAPSHOT-jar-with-dependencies.jar

핑백

덧글

댓글 입력 영역

Google AdSense (text/image)