java - 使用 Maven 解压缩并重新压缩文件?

标签 java maven build zip pom.xml

问题:Maven 中是否有任何方法(无需使用 ant 插件)解压缩文件,cd 进入目录,删除文件,然后重新压缩,所有这些都是构建?

这是必要的,因为它是一个复杂的构建,也不想必须使用 gradle 来完成此任务。

最佳答案

truezip-maven-plugin及其remove也可以一步满足解压缩、删除文件和再次压缩的要求。目标:

Remove a set of files from an existing archive.

official示例也涵盖了这种情况。

给定以下代码段:

<properties>
    <archive>${project.basedir}/sample.zip</archive>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>truezip-maven-plugin</artifactId>
            <version>1.2</version>
            <executions>
                <execution>
                    <id>remove-a-file</id>
                    <goals>
                        <goal>remove</goal>
                    </goals>
                    <phase>package</phase>
                    <configuration>
                        <fileset>
                            <!-- note how the archive is treated as a normal file directory -->
                            <directory>${archive}</directory>
                            <includes>
                                <include>hello.txt</include>
                            </includes>
                        </fileset>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

并执行:

mvn clean package

构建将处理 ${archive} 文件(在本例中为 sample.zip,与 pom.xml 处于同一级别> 文件,即在 project.basedir 目录中)并从中删除 hello.txt 文件。然后重新压缩一切。

我刚刚测试成功,如果不需要,您甚至可以跳过 properties 部分。但是,您也应该仔细了解:

  • zip 文件不应受版本控制,否则会在每次构建时产生冲突
  • 该行为很可能不应该是默认 Maven 构建的一部分,因此很适合 Maven profile
  • 该插件会替换原始文件,因此如果这是一个问题,您可以先将其复制到另一个位置,然后按上述方式进行处理。要复制它,您可以使用 maven-resources-plugin 及其 copy-resources 目标。

关于java - 使用 Maven 解压缩并重新压缩文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39705287/

相关文章:

android - 将Maven与AAR结合使用的Android项目没有Eclipse错误

c++ - 如何在Linux上构建Boost.Beast?该库位于 github 上,但要到 12 月才会包含在 Boost 中

c++ - CLOCKS_PER_SEC, token 前缺少二元运算符... [NFIQ 2.0]

qt - 如何将DLL添加到Qbs项目中

java - 如何通过使用 OpenCsv 记录无效记录的错误来创建有效 CSV 记录的列表?

java - TreeSet 不能在编译时检查比较器对象吗?

java - 如何以静态和非静态方式使用枚举

java - Spring Boot 控件目标 JAR 文件名

java - 在 Linux 中加载扩展时出现 NullPointerException

java.lang.NoSuchMethodError : javax. persistence.Table.indexes()