1

这是与我昨天的问题相关的后续问题: Ant Ear Update without Full Exploding Ear

我正在使用 Ant 1.8.2 并且能够使用我在上面提供的链接中制作的示例在耳朵中更新文件。

我的ear 文件中有一个war 文件,我希望看看是否有办法进行嵌套更新(例如更新ear 中的war 文件)。

我的另一个选择是提取战争,更新战争,然后用更新的战争更新耳朵。如果有办法进行嵌套更新,我认为这会节省我的时间,因为我的战争文件非常大。

4

1 回答 1

0

以下是我的替代方法 POC,以防有人感兴趣。如果我们找不到“嵌套”更新,我将使用它。

<property name="ear.file1"          value="file1.ear"/>
<property name="war.file1"          value="war1.war"/>
<property name="war.file"           value="war.war"/>
<property name="war.file.backup"    value="warBk.war"/>
<property name="text.file1"         value="1.txt"/>
<property name="text.file2"         value="2.txt"/>
<property name="xml.application1"   value="application.xml"/>

<target name="clean">
    <delete file="${ear.file1}"/>
    <delete file="${war.file}"/>
    <delete file="${war.file.backup}"/>
</target>

<target name="run">

    <!-- Our war file contains 1.txt, allows us add 2.txt and verify updates properly -->
    <copy file="${war.file1}" tofile="${war.file}"/>

    <!-- simple ear that will be updated -->
    <ear earfile="${ear.file1}" appxml="${xml.application1}">
        <fileset dir="." includes="${text.file1}"/>
        <fileset dir="." includes="${war.file}"/>
    </ear>  

    <!-- Backup war, for comparision purposes -->
    <move file="${war.file}" tofile="${war.file.backup}" overwrite="true" />

    <!-- Extact the war we just added -->
    <unzip dest="." src="${ear.file1}" overwrite="true" >
        <patternset>
            <include name="${war.file}" />
        </patternset>
    </unzip>

    <!-- Update the war by adding a file -->
    <war destfile="${war.file}" update="true">
        <fileset dir="." includes="${text.file2}"/>
    </war>

    <!-- Update the ear with our updated war -->
    <ear earfile="${ear.file1}" appxml="${xml.application1}" update="true">
        <fileset dir="." includes="${war.file}"/>
    </ear>  
</target>

<target name="main" depends="clean,run"/>
于 2012-08-22T16:41:09.500 回答