使用 Maven 解压缩并重新压缩文件?
Posted
技术标签:
【中文标题】使用 Maven 解压缩并重新压缩文件?【英文标题】:Unzip and re zip a file using Maven? 【发布时间】:2017-02-03 22:36:12 【问题描述】:问题:在 Maven 中是否有任何方法(无需借助 ant 插件)解压缩文件、cd 进入目录、删除文件并重新压缩,所有这些都作为构建?
这是必要的,因为它是一个复杂的构建,也不想使用 gradle 来完成这个任务。
【问题讨论】:
你能解释一下为什么你需要这样做吗?这个 ZIP 是生成的吗?如果是这样,由谁以及何时?您要删除其中的哪个文件,为什么? Unpack inner zips in zip with Maven的可能重复 mvn 依赖:unpack + maven-assembly-plugin 用于重新压缩 你可以看看maven-assembly-plugin。这可以处理解压缩和重新打包... 【参考方案1】:truezip-maven-plugin
及其remove
目标也可以一步满足解压缩、删除文件和再次压缩的要求:
从现有存档中删除一组文件。
official 示例也涵盖了这种情况。
给定以下 sn-p:
<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
部分。但是,您也应该仔细了解:
maven-resources-plugin
及其copy-resources
目标。
【讨论】:
@user1974753 你试过这个解决方案了吗?以上是关于使用 Maven 解压缩并重新压缩文件?的主要内容,如果未能解决你的问题,请参考以下文章