5

我正在使用 ant 1.8.2 并且我有一个很大的 Ear 文件。

需要对耳朵稍作改动,具体取决于安装期间的用户选择。

在安装过程结束时,我运行了一个 ant 脚本,它根据用户的选择更新 ear。这些文件只包含在耳朵里,如果用户有相关的许可……所以更新是必要的。

目前我正在爆炸整个耳朵,添加必要的文件,然后制作更新的耳朵。

我希望找到一种方法来删除和/或添加文件,而无需经历整个解压缩/更新/压缩过程。

4

2 回答 2

3

ear 任务有一个update属性,您可以将其设置为 true。

这样文件将被添加到现有的 zipfile 中,而不是创建一个新的。

于 2012-08-21T19:28:56.397 回答
2

@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"/>

于 2012-08-21T22:33:19.850 回答