Blog categories

Comments

[Maven] JAR 생성 시 dependency 포함

[Maven] JAR 생성 시 dependency 포함

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>

관련 링크

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

div#stuning-header .dfd-stuning-header-bg-container {background-image: url(https://tech.sangron.com/wp-content/uploads/sites/2/2014/01/java_wallpaper_background.jpg);background-color: #3f3f3f;background-size: cover;background-position: top center;background-attachment: initial;background-repeat: no-repeat;}#stuning-header div.page-title-inner {min-height: 350px;}