Создайте войну с отфильтрованным / модифицированным web.xml - PullRequest
3 голосов
/ 08 апреля 2011

Во время сборки я обновляю некоторые переменные, которые хранятся в файле 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 Ответ

1 голос
/ 08 апреля 2011

Вам нужно поместить файл web.xml во временную папку, если вы не хотите копировать его напрямую в WebContent / WEB-INF и удалить исключение для этой папки.Для не существует подэлемента, который позволил бы вам создать его на лету, как для манифеста.

Как говорит Оэрс, кажется, что-то странное, опечатка или подобное.Вы создаете "$ {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>
...