我目前正在这样做:
<jar update="yes"
jarfile="${pwd}/dist/${release}_installer.jar">
<zipfileset src="${pwd}/dist/app.jar" includes="com/izforge/izpack/panels/**"/>
<zipfileset src="${pwd}/dist/app.jar" includes="com/xyz/img/logo.png"/>
</jar>
我的现有安装程序JAR已更新,以根据需要包含从应用程序JAR中提取的文件。
到目前为止,非常好。
但是,我想修改行为,使图像文件的路径与复制的路径不同:
目前:
com/izforge/izpack/panels/MyIzPanel.class
com/xyz/img/logo.png
我想要的是什么:
com/izforge/izpack/panels/MyIzPanel.class
blah/img/logo.png
所以我需要复制文件,但是使用<zipfileset>
和<jar>
以便我可以修改目录结构。
有没有办法做到这一点,除了解压缩整个内容复制文件,然后再将其重新拉回来?
编辑:
链接到之前的相关问题:ant task to remove files from a jar
答案 0 :(得分:5)
您可以使用fullpath
属性:
<zipfileset src="${pwd}/dist/app.jar"
includes="com/xyz/img/logo.png" fullpath="blah/img/logo.img"/>
如果您需要复制多个文件,可能需要查看prefix
属性,例如:
<zipfileset src="${pwd}/dist/app.jar"
includes="**/*.png" prefix="blah/img"/>
答案 1 :(得分:2)
为了动态修改档案中的目录结构,您可以将该任务与<mappedresources
&gt;结合使用,例如:
<jar file="target.jar" update="true">
<mappedresources>
<zipfileset src="source.jar">
<include name="com/xyz/img/*.png"/>
</zipfileset>
<mapper type="glob" from="com/xyz/img/*.png" to="bla/img/*.png" />
</mappedresources>
</jar>
答案 2 :(得分:0)
您应该按照zipgroupfileset解释here。