You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Maven Assembly插件生成的tar.gz解压后自带install目录如何去除

解决Maven Assembly插件生成压缩包后顶层目录问题

我之前也碰到过这个坑!问题根源不在pom.xml的插件配置,而是你那个assembly/app-assembly.xml描述文件里的设置——大概率是你在descriptor里指定了顶层的install作为基础目录,或者文件集的输出路径带了install前缀。下面是具体的修复步骤:

1. 修改Assembly描述文件(核心操作)

打开你的assembly/app-assembly.xml,重点检查这两个关键点:

  • 如果文件里存在<baseDirectory>install</baseDirectory>这一行,直接删掉它,或者改成<baseDirectory>/</baseDirectory>(空路径,代表解压后直接放在当前目录)。
  • 检查每个<fileSet>的outputDirectory配置,确保不要写成install/lib或install/scripts,而是直接设为lib和scripts。

给你一个参考的正确descriptor示例:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
    <id>bin</id>
    <!-- 这里不要设置baseDirectory为install,留空或设为/即可 -->
    <baseDirectory>/</baseDirectory>
    <formats>
        <format>tar.gz</format>
    </formats>
    <fileSets>
        <!-- 打包lib目录到压缩包的根目录下的lib -->
        <fileSet>
            <directory>${project.build.directory}/lib</directory>
            <outputDirectory>lib</outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
        <!-- 打包scripts目录到压缩包的根目录下的scripts -->
        <fileSet>
            <directory>${project.basedir}/src/main/scripts</directory>
            <outputDirectory>scripts</outputDirectory>
            <includes>
                <include>*.sh</include>
                <include>*.bat</include>
            </includes>
            <fileMode>0755</fileMode> <!-- 给脚本添加执行权限 -->
        </fileSet>
    </fileSets>
</assembly>

2. 关于pom.xml的插件配置

你当前pom里的<finalName>install</finalName>只是生成的压缩包文件名(比如会生成install.tar.gz),和解压后的顶层目录无关,所以这个可以保留或者改成你想要的名称,不会影响解压后的目录结构。

3. 重新打包验证

执行打包命令:

mvn clean package assembly:single

如果已经把assembly插件绑定到了package生命周期阶段,直接执行:

mvn clean package

然后解压生成的tar.gz文件,就能直接看到lib和scripts目录,不会再出现顶层的install目录了。


内容的提问来源于stack exchange,提问作者Nikhil Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:10:18