我正在使用 ant 1.8.2 并且我有一个很大的 Ear 文件。
需要对耳朵稍作改动,具体取决于安装期间的用户选择。
在安装过程结束时,我运行了一个 ant 脚本,它根据用户的选择更新 ear。这些文件只包含在耳朵里,如果用户有相关的许可……所以更新是必要的。
目前我正在爆炸整个耳朵,添加必要的文件,然后制作更新的耳朵。
我希望找到一种方法来删除和/或添加文件,而无需经历整个解压缩/更新/压缩过程。
ear 任务有一个update
属性,您可以将其设置为 true。
这样文件将被添加到现有的 zipfile 中,而不是创建一个新的。
@oers 感谢您的建议,以下是我用来将文件添加到耳朵并替换 application.xml 文件的 POC。
<property name="ear.file1" value="file1.ear"/>
<property name="ear.file2" value="file2.ear"/>
<property name="text.file1" value="1.txt"/>
<property name="text.file2" value="2.txt"/>
<property name="xml.application1" value="application.xml"/>
<property name="xml.application2" value="application2.xml"/>
<target name="clean">
<delete file="${ear.file1}"/>
<delete file="${ear.file2}"/>
</target>
<target name="run">
<!-- simple ear -->
<ear earfile="${ear.file1}" appxml="${xml.application1}">
<fileset dir="." includes="${text.file1}"/>
</ear>
<!-- simple ear that will be updated -->
<ear earfile="${ear.file2}" appxml="${xml.application1}">
<fileset dir="." includes="${text.file1}"/>
</ear>
<!-- ear update, both application.xml file and add another file. -->
<ear earfile="${ear.file2}" appxml="${xml.application2}" update="true">
<fileset dir="." includes="${text.file2}"/>
</ear>
</target>
<target name="main" depends="clean,run"/>