使用 Maven 修改多个 zip 文件内的文件
今天我想做这个任务,途中遇到了一些问题。所以我在这里提出我的问题和我找到的解决方案。也许有人知道一个更简单的解决方案!
问题是这样的:我试图构建一个使用 Maven2 构建的 Java 项目的分发包。在上一步中,生成了几个 zip 文件,它们的根目录中都包含一个名为 manifest.xml 的文件,我想在所有这些 ZIP 文件中修改此 XML 文件。这是一个方案:
package-file-1.zip
|- contents(DIR)
\- manifest.xml
package-file-2.zip
|- contents(DIR)
\- manifest.xml
Today I wanted to perform this task, and I run across some issues in the way. So I present here my problem and the solution I found. Perhaps somebody knows a simpler solution!
The problem was this: I was trying to build a distribution package of a Java project which is built with Maven2. In a previous step, several zip files all containing a file named manifest.xml in the root were generated, and I wanted to modify this XML file in all this ZIP files. This is a scheme:
package-file-1.zip
|- contents(DIR)
\- manifest.xml
package-file-2.zip
|- contents(DIR)
\- manifest.xml
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
此示例修改
${zip.sourcedir}
中的 zip 文件,将清单.xml 文件中的字符串&
替换为&
所有这些 zip 文件,并将修改后的 zip 文件放入目录target
中。为此,它使用
maven-antrun-plugin
,包括antcontrib
任务中的for
和var
任务( http://ant-contrib.sourceforge.net)。这允许将每个 zip 文件的内容解压缩到单独的目录中。另请注意使用basename
任务从 zip 文件的路径中提取名称。为了编写这个解决方案,我从以下 URL 中获得了所需的知识:
使用 Ant 修改 JAR(或 ZIP)文件:如何使用 ANT 修改 jar 文件中的文件?
将多个文件解压缩到单独的目录中:http://grokbase.com/t/ant.apache.org/user/2004/01/re-how-to-unzip-multiple-file-into-separate-directories/122a5ezxhh6eolf5enkrdfgryika
在Maven2中使用ant-contrib:http://docs.codehaus.org/display/MAVENUSER/Antrun+Plugin< /p>
net/sf/antcontrib/antlib.xml
而不是net/sf/antcontrib/antcontrib.properties
以便能够使用对于
任务使用 ant-contrib
var
任务:< a href="http://www.jguru.com/forums/view.jsp?EID=1374074" rel="nofollow noreferrer">http://www.jguru.com/forums/view.jsp?EID=1374074编辑
发布问题后,我找到了几个相关的问题,如果有人有问题,这可能会有所帮助实现类似的问题时遇到问题:
This example modifies the zip files in
${zip.sourcedir}
replacing the string&
with&
in the file manifest.xml of all this zip files and places the modified zip files in the directorytarget
.For that, it uses the
maven-antrun-plugin
including thefor
andvar
tasks from theantcontrib
tasks(http://ant-contrib.sourceforge.net). This permits to unzip the contents of every zip file into a separate directory. Note also the use of the taskbasename
to extract the name of the zip files out of their path.In order to write this solution, I got the needed knowledge from this URLs:
Modify a JAR(or ZIP) file using Ant: How do I modify a file in a jar file using ANT?
Unzip multiple files into separate directories: http://grokbase.com/t/ant.apache.org/user/2004/01/re-how-to-unzip-multiple-file-into-separate-directories/122a5ezxhh6eolf5enkrdfgryika
Use ant-contrib in Maven2: http://docs.codehaus.org/display/MAVENUSER/Antrun+Plugin
net/sf/antcontrib/antlib.xml
instead ofnet/sf/antcontrib/antcontrib.properties
to be able to use thefor
taskUse the ant-contrib
var
task: http://www.jguru.com/forums/view.jsp?EID=1374074Edit
After posting the question, I was able to find a couple of questions related, that could help if one is having problems implementing a similar thing: