我有一个Maven项目,在src / main目录下有一个名为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实用程序本身,这意味着在解压缩时获取 产量 目录及其所有内容。我得到的是包含所有项目路径的输出文件夹 - name / src / main / output。
您需要将程序集描述符配置为 不 包括基目录并为其配置输出目录 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目标
$ tar zxvf Q3330855-1.0-SNAPSHOT-bundle.tar.gz
输出/
输出/ hello.txt的
也可以看看
您需要将程序集描述符配置为 不 包括基目录并为其配置输出目录 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目标
$ tar zxvf Q3330855-1.0-SNAPSHOT-bundle.tar.gz
输出/
输出/ hello.txt的
也可以看看
尝试设置 outputDirectory
在里面 fileSet
。那应该删除src / main / output目录。
<fileSet>
<directory>src/main/output</directory>
<outputDirectory>.</outputDirectory>
</fileSet>
您可能还需要设置 includeBaseDirectory
为假。这将删除名称目录。
<assembly>
<id>bundle</id>
<includeBaseDirectory>false</includeBaseDirectory>
<!-- ... -->