使用过滤/修改的web.xml构建战争

时间:2011-04-08 05:26:16

标签: ant war

在构建时,我正在使用属性文件中的变量更新存储在web.xml文件中的一些变量,有没有办法简化我在这里做的事情:

    <target name="war-test" depends="compile">
            <mkdir dir="${dist}"/>
            <mkdir dir="${dist}/tmp"/>
            <copy file="WebContent/WEB-INF/web.xml.templ" tofile="${dist}/tmp/web.xml">
                    <filterchain>
                            <replacetokens>
                                    <token key="smtp.hostname" value="${test.smtp.hostname}"/>
                                    <token key="smtp.port" value="${test.smtp.port}"/>
                            </replacetokens>
                    </filterchain>
            </copy>
            <war destfile="${dist}/mywarfile-test.war" webxml="${dist}/tmp/web.xml">
                    <fileset dir="WebContent">
                            <exclude name="META-INF/**"/>
                            <exclude name="META-INF"/>
                            <exclude name="WEB-INF/**"/>
                            <exclude name="WEB-INF"/>
                    </fileset>
                    <lib dir="lib">
                            <exclude name="somelibrary.jar"/>
                    </lib>
                    <classes dir="${build}"/>
            </war>
            <delete dir="${dist}/tmp"/>
            <antcall target="clean"/>
    </target>

我是否需要制作tmp目录?

1 个答案:

答案 0 :(得分:1)

如果您不想将web.xml直接复制到WebContent / WEB-INF并删除该文件夹的排除,则需要将web.xml放在临时位置。 &lt; war&gt;没有子元素这可以让你动态创建它,就像清单一样。

正如oers所说,似乎有一些奇怪的,错字或类似的东西。 您创建“$ {dist} /metainf/web.xml但包含”$ {dist} /tmp/web.xml。

如果您想要更少的线条,可以用以下内容替换过滤器链:

<filterset>
    <filter token="smtp.hostname" value="${test.smtp.hostname}" />
    <filter token="smtp.port" value="${test.smtp.port}" />
</filterset>
相关问题