1)
컴파일을 하고 나면, 실행할 수 있는 jar가 생기는데. 단독으로 쓰기가 어렵기 때문에 classpath를 지정해줘야 하는 이슈가 생긴다.(허드슨 hpi 도 대표적인 케이스라 할 수 있겠다.)
이런 불편함이 존재해서, 관련 lib들을 하나의 jar로 묶을 수 있는 방법이 있다.


 <build>
  <pluginManagement>
   <plugins>
    <plugin>
     <artifactId>maven-assembly-plugin</artifactId>
     <inherited>false</inherited>
     <configuration>
      <descriptorRefs>
       <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
     </configuration>
    </plugin>
   </plugins>
  </pluginManagement>


....
</build>

전체를 하나의 jar로 만들어보기
#] mvn assembly:assembly

aaa-1.0-jar-with-dependencies.jar 이런 파일이 target 디렉토리 밑에 생겼을 것이다.
zip 프로그램으로 보면, maven lib가 다 들어가 있음을 확인할 수 있다.


2)

사실 이런 방법보다는 아래와 같이 project 설정을 하고, target 디렉토리와 소스 repository와 같은 파일들을 모아줄 수 있게 한다.

 <build>
  <pluginManagement>
   <plugins>
    <plugin>
     <artifactId>maven-assembly-plugin</artifactId>
     <inherited>false</inherited>
     <configuration>
      <descriptorRefs>
       <descriptorRef>project</descriptorRef>
      </descriptorRefs>
     </configuration>
    </plugin>
   </plugins>
  </pluginManagement>


....
</build>
#] mvn assembly:assembly -DdescriptorId=jar-with-dependencies
똑같은 효과를 누릴 수 있다.



3)

jar -jar 파일명.jar 하면 바로 실행할 수 있게 하려면, archive를 넣어주면 된다.

 <build>
  <pluginManagement>
   <plugins>
    <plugin>
     <artifactId>maven-assembly-plugin</artifactId>
     <inherited>false</inherited>
     <configuration>
      <descriptorRefs>
       <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
     </configuration>
             <archive>
              <manifest>
                <mainClass>org.Test</mainClass>
              </manifest>
            </archive>

    </plugin>
   </plugins>
  </pluginManagement>


....
</build>




4)
descriptorRef 설정의 종류는 여러가지가 있다.
- bin
- src
- project
- jar-with-dependencies
Posted by '김용환'

댓글을 달아 주세요