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

如何用Maven Truezip Plugin批量解压目录中的tgz文件

解决方案:用Maven AntRun Plugin批量解压Helm依赖tgz文件

针对你的需求——批量解压charts目录下所有版本动态变化的Helm依赖tgz包,且无需在pom.xml中硬编码文件名,Maven AntRun Plugin是更可靠的选择,它借助Ant的文件处理能力可以轻松实现批量解压。

完整配置示例

将以下插件配置添加到你的pom.xml的<build><plugins>节点中:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <id>extract-helm-chart-dependencies</id>
            <phase>compile</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <target>
                    <!-- 确保输出目录存在,避免解压失败 -->
                    <mkdir dir="${project.build.directory}/dest"/>
                    <!-- 遍历charts目录下所有.tgz文件,批量解压 -->
                    <apply executable="unzip" parallel="false">
                        <fileset dir="${helm.chart.target.directory.complete}/charts" includes="*.tgz"/>
                        <!-- 解压参数:-q静默模式,-d指定输出目录 -->
                        <arg value="-q"/>
                        <arg value="-d"/>
                        <arg value="${project.build.directory}/dest"/>
                        <srcfile/>
                    </apply>
                </target>
            </configuration>
        </execution>
    </executions>
</plugin>

配置说明

  1. 目录预处理:<mkdir>任务确保输出目录${project.build.directory}/dest存在,避免因目录缺失导致解压失败。
  2. 批量遍历与解压:<apply>任务会自动遍历指定目录下所有匹配*.tgz的文件,对每个文件执行unzip命令。参数-q开启静默模式减少日志输出,-d指定解压目标目录。
  3. 跨平台兼容性优化:如果需要在Windows环境运行,确保系统已配置unzip命令(比如安装Git Bash并添加到PATH),或者替换为Ant原生的<unzip>任务(纯Java实现,跨平台无依赖),示例如下:
<target>
    <mkdir dir="${project.build.directory}/dest"/>
    <foreach target="extract-tgz" param="tgz-file">
        <fileset dir="${helm.chart.target.directory.complete}/charts" includes="*.tgz"/>
    </foreach>
</target>
<target name="extract-tgz">
    <unzip src="${tgz-file}" dest="${project.build.directory}/dest" compression="gzip"/>
</target>

注意:使用<foreach>需要Ant的ant-contrib库,需额外添加依赖到antrun插件中:

<dependencies>
    <dependency>
        <groupId>ant-contrib</groupId>
        <artifactId>ant-contrib</artifactId>
        <version>1.0b3</version>
        <exclusions>
            <exclusion>
                <groupId>ant</groupId>
                <artifactId>ant</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

备选方案:用Exec Plugin调用Shell命令(Linux/macOS专属)

如果你的构建环境仅为Linux或macOS,也可以直接调用tar命令批量解压,配置更简洁:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <id>extract-helm-charts</id>
            <phase>compile</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <executable>bash</executable>
                <arguments>
                    <argument>-c</argument>
                    <argument>for tgz in ${helm.chart.target.directory.complete}/charts/*.tgz; do tar -xzf "$tgz" -C ${project.build.directory}/dest; done</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

验证效果

执行mvn compile后,${project.build.directory}/dest目录下会包含所有解压后的Helm依赖Chart文件,后续即可正常调用helm-schema工具生成values.schema.json。

内容的提问来源于stack exchange,提问作者Marko Fries

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 08:22:34