Maven 을 이용하여 실행 가능한 Jar 파일을 만들어 보자.
게다가 Maven 에서 제공하는 Library 가 아닌 Local Library 를 추가 하는 방법 또한 메모하자.
1. 외부 라이브러리 추가하는 방법
우선, Local Library를 pom.xml 에 추가 하는 방법은 아래 코드를 넣어보자.
<repositories>
<repository>
<id>localrepository</id>
<url>file://${basedir}/lib</url>
</repository>
</repositories>
위의 url 태그 부분에 외부 Library 파일들이 있어야 되고 Dependency 로 추가하기 위해선 파일이 있는 경로를 groupId/artifactId/version/artifactId-version.jar 과 같이 해야 된다.
경로에 파일을 생성 한 뒤, Dependency 관련 정보를 아래와 같이 pom.xml 에 추가 한다.
(직접 만든 rabbitmq library에 대한 예제. 경로는 "프로젝트 루트경로\lib\rabbitmq\rmq_queue\1.0.0\rmq_queue-1.0.0.jar" 이다.)
<dependencies>
......
<dependency>
<groupId>rabbitmq</groupId>
<artifactId>rmq_queue</artifactId>
<version>1.0.0</version>
</dependency>
......
</dependencies>
2. 실행 가능한 Jar 파일 만들기
실행 가능한 Jar 파일을 만들기 위해선 pom.xml 파일에 Build 태그를 넣어 Plugin들을 추가 한다.
<build>
<plugins>
......
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<executions>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</execution>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</execution>
</executions>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<!-- XML schema namespaces 오류 수정을 위해 필요함 -->
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
<!-- 실행 가능한 jar 파일을 만들기 위해서는 main method가 존재하는 클래스를 명시해 주어야 함 -->
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>com.metadataCollector.metadataCollectorMain</Main-Class>
</manifestEntries>
</transformer>
</transformers>
<!-- Dependency Reduced Pom 파일 미생성 -->
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
</execution>
</executions>
</plugin>
......
</plugins>
</build>
추가 할때 Main-Class 이름을 넣어 준다.
위와 같이 모든 준비 작업을 완료하고 mvn package 명령어로 실행가능한 jar 파일을 생성한다.
간단하게 작성했지만... 부족한 부분이 있으면 수정해야지....