1. Dependency 를 폴더에 담기
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy</id> <phase>install</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory> ${project.build.directory}/lib </outputDirectory> </configuration> </execution> </executions> </plugin>
goal : dependency:copy-dependencies
2. Dependency 를 jar 에 포함시키기
<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>
goal : assembly:assembly
파일 생성 시 2가지 종류의 파일이 생성됩니다.
- xxx-0.0.1-SNAPSHOT.jar :: 기본 생성 파일
- xxx-0.0.1-SNAPSHOT-jar-with-dependencies.jar :: dependency 포함 파일 (당연히 파일 크기도 큽니다)
실행 JAR (Executable JAR) 파일의 경우 위와 같이 하면 ‘xxx-0.0.1-SNAPSHOT-jar-with-dependencies.jar에 기본 Manifest 속성이 없습니다.’ 와 같은 에러문구를 마주하게 됩니다. Manifest 설정이 빠져서 그런데 아래와 같이 작성해주셔야 합니다.
<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> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>com.sangron.youtube.article.Article</mainClass> </manifest> </archive> </configuration> </plugin>
관련 링크
Maven Executable Jar - 실행 Jar만들기
Maven - jar 파일에 dependency 포함시키기