Я могу распаковать zip-файл с помощью плагина maven-dependency, но в настоящее время у меня проблема с тем, что внутри этого zip-файла есть другие zip-файлы, и мне также нужно их распаковать. Как я могу это сделать?
Распаковать внутренние молнии в zip с помощью Maven
Ответы (4)
Вы можете разархивировать любые файлы с помощью плагина запуска задач ant:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>prepare</id>
<phase>validate</phase>
<configuration>
<tasks>
<echo message="prepare phase" />
<unzip src="zips/archive.zip" dest="output/" />
<unzip src="output/inner.zip" dest="output/" />
<unzip dest="output">
<fileset dir="archives">
<include name="prefix*.zip" />
</fileset>
</unzip>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
person
Boris Pavlović
schedule
16.07.2010
Я так понимаю, это помещено в ваш файл pom.xml?
- person Rob Avery IV; 18.03.2013
Да, это часть вашего файла Maven
pom.xml
.
- person Boris Pavlović; 19.03.2013
Как в этом примере распаковать файл, соответствующий регулярному выражению? Например. ‹unzip src=zips/archive[0-9].zip dest=output/ /›
- person Georgios Stathis; 24.02.2016
Попробуйте использовать подстановочный знак:
<unzip src="zips/archive*.zip" dest="output/" />
- person Boris Pavlović; 24.02.2016
Нет, это не сработает. Вместо этого у меня было больше шансов с набором файлов:
<unzip dest="output"> <fileset dir="zips"> <include name="archive*.zip" /> </fileset> </unzip>
- person Georgios Stathis; 24.02.2016
Использование ANT больше не круто ;)
http://maven.apache.org/plugins/maven-dependency-plugin/examples/unpacking-artifacts.html
Пример кода для распаковки zip-файла (archive.zip):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<phase>process-resources</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>foo</groupId>
<artifactId>archive</artifactId>
<version>1.0-SNAPSHOT</version>
<type>zip</type>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
Сначала необходимо установить файл archive.zip в репозиторий maven. Например, с задачей Прикрепить артефакт org.codehaus.mojo:build-helper-maven-plugin:build-helper:attach-artifact
person
MariuszS
schedule
04.10.2011
Но это распаковывает только артефакты, а не произвольные файлы.
- person Ondra Žižka; 20.07.2012
@OndraŽižka С maven вы можете рассматривать любой произвольный файл как артефакт, просто посмотрите на
build-helper:attach-artifact
.
- person MariuszS; 11.01.2014
@MariuszS, как это сделать с произвольным файлом в локальной файловой системе?
- person tojofo; 20.03.2014
Может быть, ant не крут, но требует гораздо меньше строк и дает тот же результат. Кроме того, если вы прикрепляете артефакт с помощью build-helper, он генерирует множество других неприятных побочных эффектов.
- person Alexander Pogrebnyak; 07.07.2014
При сборке с помощью Eclipse Juno цель
unpack
не поддерживается m2e 1.3.1.
- person Stephan; 29.12.2015
Обычно бинарные (zip) файлы должны храниться вне репозитория VCS (GIT), например, могут быть развернуты в репозиторий артефактов (нексус). После этого вы можете распаковать такой артефакт, как описано выше.
- person MariuszS; 21.04.2016
Я сделал тест, и это НЕ распаковывает внутренние zip-файлы. Лучше использовать плагин Ant, как описано в другом ответе.
- person Sergio; 07.06.2016
Плагин TrueZIP Maven также работает хорошо. Пример конфигурации:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>truezip-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>copy-package</id>
<goals>
<goal>copy</goal>
</goals>
<phase>package</phase>
<configuration>
<verbose>true</verbose>
<fileset>
<directory>outer.zip</directory>
<outputDirectory>${project.build.directory}/outer</outputDirectory>
</fileset>
<fileset>
<directory>${project.build.directory}/outer/inner.zip</directory>
<outputDirectory>${project.build.directory}/inner</outputDirectory>
</fileset>
</configuration>
</execution>
</executions>
</plugin>
person
palacsint
schedule
27.05.2015
Codehaus закрывается, поэтому ссылки теперь ведут на страницу, которую мы реорганизуем.
- person Troy Daniels; 20.10.2015
@palacsint какова лицензия вышеуказанного плагина, я не могу найти ее в их документах
- person Kasun Siyambalapitiya; 07.11.2017
Вы также можете использовать зависимости плагина. Есть цель распаковать зависимости (см. http://maven.apache.org/plugins/maven-dependency-plugin/unpack-dependencies-mojo.html)
person
benzen
schedule
01.03.2011
этот ответ НЕверен, вопрос касается файла с внутренним zip, а НЕ зависимости.
- person Sergio; 07.06.2016