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

时间:2016-09-26 14:16:24

标签: java maven build zip pom.xml

问题:Maven中有没有办法(不使用ant插件)解压缩文件,cd进入目录,删除文件,然后重新压缩它,所有这些都是建?

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

1 个答案:

答案 0 :(得分:2)

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

  

从现有存档中删除一组文件。

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目标。
相关问题