2016-09-26 5 views
4

Вопрос: есть ли какой-либо способ в Maven (не прибегая к плагину муравьев), чтобы распаковать файл, cd в каталог, удалить файл, а rezip его, все как часть сборки?Разархивируйте и запишите файл с помощью Maven?

Это необходимо, поскольку это сложная сборка, а также не требуется использовать градлу для выполнения этой задачи.

+3

Можете ли вы объяснить, почему вы должны это сделать? Создается ли этот ZIP-файл? Если да, то кто и когда? Какой файл вы хотите удалить в нем и почему? – Tunaki

+1

Возможный дубликат [Распаковать внутренние молнии в zip с помощью Maven] (http://stackoverflow.com/questions/3264064/unpack-inner-zips-in-zip-with-maven) – DimaSan

+0

mvn зависимость: распаковать + maven-assembly- плагин для rezip – johnnynemonic

ответ

2

Требование распаковки, удаление файла и сжать снова можно встретить в один один шаге по truezip-maven-plugin и его remove цели которых:

Удалить набор файлов из существующего архива.

Примеры также охватывают этот сценарий.

Учитывая следующий фрагмент:

<properties> 
    <archive>${project.basedir}/sample.zip</archive> 
</properties> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>truezip-maven-plugin</artifactId> 
      <version>1.2</version> 
      <executions> 
       <execution> 
        <id>remove-a-file</id> 
        <goals> 
         <goal>remove</goal> 
        </goals> 
        <phase>package</phase> 
        <configuration> 
         <fileset> 
          <!-- note how the archive is treated as a normal file directory --> 
          <directory>${archive}</directory> 
          <includes> 
           <include>hello.txt</include> 
          </includes> 
         </fileset> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

И исполнение:

mvn clean package 

Строить будет обрабатывать ${archive} файл (в данном случае sample.zip на том же уровне файла pom.xml, т.е. , в каталоге project.basedir) и удалите из него файл hello.txt. Тогда все все.

Я только что протестировал его, вы даже можете пропустить раздел properties, если это не требуется. Тем не менее, вы должны также тщательно знать, что:

  • Файл почтового индекса не должно быть под контролем версий, в противном случае он будет создавать конфликты в каждой сборки
  • поведение, скорее всего, не должны быть частью Maven по умолчанию строить, поэтому хороший кандидат на Maven profile
  • плагин заменяет исходный файл, поэтому, если это была проблема, вы можете сначала скопировать его в другое место, а затем обработать его, как указано выше. Чтобы скопировать его, вы можете использовать maven-resources-plugin и его цель copy-resources.
+0

@ user1974753 Вы попробовали это решение? –

Смежные вопросы