백업 용도로 또는 어떤 목적이든 메이븐에서 자바소스, 웹소스, 각종 설정파일 등등 내가 원하는 파일만을 포함하는 zip 파일을 만들고 싶을 때가 있다.

maven-assembly-plugin이 그 일을 해준다.

   <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
     <descriptors>
      <descriptor>.assembly.xml</descriptor>
     </descriptors>
    </configuration>
   </plugin>

이 플러그인의 한가지 귀찮은 점은 assembly descriptor 라는 파일을 만들어야한다는 것인데 이쯤에서 또다시 Ant가 그리워지는 순간이기도 하다.

<?xml version="1.0" encoding="UTF-8"?>
<assembly>
  <id>src-backup</id>
  <formats>
    <format>zip</format>
  </formats>
  <fileSets>
    <fileSet>
      <directory>.</directory>
      <outputDirectory></outputDirectory>
      <useDefaultExcludes>true</useDefaultExcludes>
      <excludes>
        <exclude>target/**</exclude>
        <exclude>bin/**</exclude>
        <exclude>build/**</exclude>
      </excludes>
    </fileSet>
  </fileSets>
</assembly>

mvn  assembly:assembly를 실행하면 {project.build.finalName}-src-backup.zip 파일이 떨궈진다.
닪순히 파일명을 {project.build.finalName}.zip 으로 하고 싶으면 descriptor 에서 <id>를 생략하면 된다.
또는 appendAssemblyId 설정을 false로 하거나.

* assembly:assembly와 assembly:single의 차이
- assembly:assembly : package phase가 먼저 실행된다. 이 goal은 phase에 바인딩하면 안된다.(못한다?)
- assembly:single : assembly 작업만 실행된다. 이 goal은 phase에 바인딩 가능하다.

Posted by 에코지오
,