구동에 필요한 의존성 라이브러리를 모두 (외부폴더로)포함해서 jar 를 생성하도록 해본다.


pom.xml 에서 jar 플러그인을 수정하고 dependency 플러그인을 추가하고 설정한다.

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<configuration>
		<archive>
			<manifest>
				<mainClass>printTime.GetTime</mainClass>
				<addClasspath>true</addClasspath>
				<classpathPrefix>libs/</classpathPrefix>
			</manifest>
		</archive>
	</configuration>
</plugin>

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-dependency-plugin</artifactId>
	<version>2.5.1</version>
	<executions>
		<execution>
			<id>copy-dependencies</id>
			<phase>package</phase>
			<goals>
				<goal>copy-dependencies</goal>
			</goals>
			<configuration>
				<includeScope>runtime</includeScope>
				<outputDirectory>${project.build.directory}/libs/</outputDirectory>
			</configuration>
		</execution>
	</executions>
</plugin>


libs 폴더를 추가하고 해당 폴더에 라이브러리들을 넣어 주도록 설정하였다.


jar 플러그인은 클래스패스 선언을 관리하여 MANIFEST.MF 에 넣어줄것이고, dependency 플러그인은 폴더를 생성하고 라이브러리들을 복사하여 줄것이다.


Maven build goals = package 를 진행해 보자. 


생성된 jar 의 MANIFEST.MF 를 살펴보면 아래와 같다.


Manifest-Version: 1.0

Archiver-Version: Plexus Archiver

Built-By: macdev

Class-Path: libs/log4j-api-2.11.1.jar libs/log4j-core-2.11.1.jar

Created-By: Apache Maven 3.3.9

Build-Jdk: 1.8.0_77

Main-Class: printTime.GetTime


Class-Path 가 추가된것을 확인할 수 있다.


jar가 생성된 폴더에 libs 폴더도 생성되었고 libs 폴더 내부에 로그 라이브러리들도 들어 있다.

별도의 classpath 를 불러 올 필요가 없어졌다. 실행해 보도록 하자.


java -jar printTime-1.0.0.jar

 







Posted by KENSIN
,