Создание архива tar.gz с Maven
У меня есть проект Maven, где в директории src/main есть sub dir, называемый output. эта папка должна быть упакована в tar.gz. при использовании плагина сборки следующим образом:
Из pom.xml:
<build>
<finalName>front</finalName>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
</plugin>
</plugins>
</build>
assembly.xml:
<assembly>
<id>bundle</id>
<formats>
<format>tar.gz</format>
</formats>
<fileSets>
<fileSet>
<directory>src/main/output</directory>
</fileSet>
</fileSets>
</assembly>
Моя проблема заключается в том, что я пытаюсь исправить результат как запуск самой утилиты tar, что означает, когда вы извлекаете, чтобы получить каталог output и весь его контент. то, что я получаю, это папка вывода, завернутая со всеми путями проекта: name/src/main/output.
Ответы
Ответ 1
Вам нужно сконфигурировать дескриптор сборки не, включить базовый каталог и настроить выходной каталог для fileSet
:
<assembly>
<id>bundle</id>
<formats>
<format>tar.gz</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>src/main/output</directory>
<outputDirectory>output</outputDirectory>
</fileSet>
</fileSets>
</assembly>
С описанным выше дескриптором сборки я получаю следующий результат (при запуске проекта, воспроизводящего структуру):
$ mvn clean assembly:assembly
...
$ cd target
$ tar zxvf Q3330855-1.0-SNAPSHOT-bundle.tar.gz
output/
output/hello.txt
См. также
Ответ 2
Попробуйте установить outputDirectory
в fileSet
. Это должно удалить каталоги src/main/output.
<fileSet>
<directory>src/main/output</directory>
<outputDirectory>.</outputDirectory>
</fileSet>
Вам также может потребоваться установить includeBaseDirectory
значение false. Это приведет к удалению каталога имен.
<assembly>
<id>bundle</id>
<includeBaseDirectory>false</includeBaseDirectory>
<!-- ... -->