Как выполнить сопоставление пути Ant в «военном» задании? - PullRequest
3 голосов
/ 10 мая 2010

У меня есть несколько наборов шаблонов файлов JAR, например

<patternset id="common.jars">
 <include name="external/castor-1.1.jar" />
 <include name="external/commons-logging-1.2.6.jar" />
 <include name="external/itext-2.0.4.jar" />
     ...
</patternset>

У меня также есть задача 'war', содержащая элемент lib:

<lib dir="${src.dir}/jars">
  <patternset refid="common.jars"/>
  <patternset refid="web.jars"/>
     ...
</lib>

Тем не менее, я получаю WEB-INF / lib, содержащий подкаталоги из моих шаблонов:

WEB-INF/lib/external/castor-1.1.jar
WEB-INF/lib/external/...

Есть ли способ сгладить это, чтобы файлы JAR появлялись на верхнем уровне в WEB-INF / lib, независимо от каталогов, указанных в шаблонах? Я посмотрел на mapper, но, похоже, вы не можете использовать их внутри lib.

Ответы [ 2 ]

9 голосов
/ 18 июня 2011

Я был недоволен необходимостью вручную создавать каталог WAR или объявлять подкаталоги библиотеки, поэтому я пришел к этому. Кажется, работает, очевидно, вам нужно настроить его под свои нужды:

<war destfile="build/output.war" webxml="${web.dir}/WEB-INF/web.xml">
    <fileset dir="${web.dir}" />
    <mappedresources>
        <fileset dir="${lib.dir}" includes="**/*.jar" />
        <chainedmapper>
            <flattenmapper/>
            <globmapper from="*.jar" to="WEB-INF/lib/*.jar" />
        </chainedmapper>
    </mappedresources>
</war>
4 голосов
/ 10 мая 2010

Вы можете попробовать использовать элемент mappedresources (Ant 1.8+)

<mappedresources>
  <!-- Fileset here -->
  <globmapper from="external/*.jar" to="*.jar"/>
</mappedresources>

http://ant.apache.org/manual/Types/resources.html#mappedresources

Если у вас типичный веб-проект, лучше разбить библиотеки веб-приложений и библиотеки общего назначения в разные папки и оставить WEB-INF / lib, чтобы во время выполнения оставались только те, которые необходимы. Таким образом, вы избежите столкновений, а также ваш проект будет намного понятнее другим разработчикам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...