如何通过Maven Assembly插件将文件平级打包至Zip根目录?
解决Maven Assembly插件打包目录层级问题
没问题,我来帮你调整配置,让文件直接出现在Zip的根目录里!
你当前的配置问题在于,directory指向的是src/main/resources/,而目标文件实际在myfiles子目录下,加上includes只匹配根目录的.file文件,导致插件打包时保留了完整的目录结构。要实现需求,只需要调整fileSet的几个参数:
修改后的完整Assembly配置
<assembly> <formats> <format>zip</format> </formats> <fileSets> <fileSet> <!-- 直接指向存放目标文件的子目录 --> <directory>src/main/resources/myfiles</directory> <!-- 包含该目录下所有文件(可根据需要调整匹配规则) --> <includes> <include>**/*</include> </includes> <!-- 设置为空字符串,将文件输出到Zip根目录 --> <outputDirectory></outputDirectory> </fileSet> </fileSets> <!-- 已经正确设置为false,避免把myfiles目录本身打包进去 --> <includeBaseDirectory>false</includeBaseDirectory> </assembly>
关键调整说明
directory:从src/main/resources/改为src/main/resources/myfiles,直接定位到你要打包的文件所在的目录,这样插件就不会携带上层的目录结构。outputDirectory:设置为空字符串(或者.),明确告诉插件将文件放到Zip的根目录,而不是嵌套原路径。includes:改为**/*来包含myfiles目录下的所有文件(包括子目录里的文件,如果有的话),如果只需要特定后缀的文件,可以改成*.file之类的规则。
这样调整后,重新执行打包命令,生成的myzip.zip里就会直接包含myfiles目录下的所有文件,不会有多余的层级嵌套啦!
内容的提问来源于stack exchange,提问作者Vishal Kawade
相关产品推荐
相关产品推荐

