Создание zip-архива maven «целевой» директории - PullRequest
33 голосов
/ 25 марта 2010

Я хочу создать zip-архив моей «целевой» директории ($ {project.build.directory). использование maven-assembly-plugin мне кажется излишним для такой простой задачи (и немного сложным - зачем мне использовать другой файл, дескриптор сборки, для такой задачи) Я не могу найти более простой maven-zip-plugin в репозитории http://repo1.maven.org/maven2.

Любой ввод?

Ответы [ 2 ]

55 голосов
/ 25 марта 2010

Если предопределенный дескриптор сборки bin не соответствует вашим потребностям, у вас есть три варианта:

  1. Использование плагина maven-assembly-plugin - Плагин maven-zip-plugin так и не вышел, потому что плагин сборки может делать все, что делал плагин zip, и многое другое, см. MNG-2243 .
  2. Использование maven-antrun-plugin (и, возможно, build-helper-plugin для прикрепления zip) - здесь есть пример здесь (и это выглядит более многословно, чем плагин сборки в конце) .
  3. Написание собственного плагина - зачем вам это делать, когда у вас есть плагин сборки.

Лично я бы просто использовал плагин maven-Assembly-со следующим дескриптором zip.xml:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
  <id>bin</id>
  <baseDirectory>/</baseDirectory>
  <formats>
    <format>zip</format>
  </formats>
  <fileSets>
    <fileSet>
      <directory>${project.build.directory}</directory>
    </fileSet>
  </fileSets>
</assembly>

А в вашем ПОМ:

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.6</version>
  <configuration>
    <descriptors>
      <descriptor>src/main/assembly/zip.xml</descriptor>
    </descriptors>
  </configuration>
  <executions>
    <execution>
      <id>make-assembly</id> <!-- this is used for inheritance merges -->
      <phase>package</phase> <!-- append to the packaging phase. -->
      <goals>
        <goal>single</goal> <!-- goals == mojos -->
      </goals>
    </execution>
  </executions>
</plugin>
14 голосов
/ 25 марта 2010

Если у вас нет «особых» потребностей в сгенерированном файле .zip, вы можете использовать один из предопределенных дескрипторов сборки Maven. Предопределенные дескрипторы сборок позволяют легко и быстро создавать конкретные сборки без необходимости предоставления собственного дескриптора сборки. Предположим, вы хотите использовать предопределенный дескриптор bin. Затем в разделе plugins раздела POM build вы можете просто добавить следующее.

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.6</version>
  <configuration>
    <descriptorRefs>
      <descriptorRef>bin</descriptorRef>
    </descriptorRefs>
  </configuration>
</plugin>

Конечно, как всегда в Maven, если вы хотите сделать что-то за пределами конфигурации по умолчанию, вам придется создать свою собственную конфигурацию, и в этом случае это означает ваш собственный дескриптор сборки.

Список предопределенных дескрипторов задокументирован здесь .

...