2013-10-07 7 views
0

В сценарии ANT есть ли способ включить файл из каталога «environmentnement» в другую войну?Создать конкретный файл WAR

Моя файловая система дерева:

  • ENVIRONNEMENT
    • DEV
      • web.xml
      • log4j.properties
    • INT
      • web.xml
      • log4j.properties
  • WebContent
    • WEB-INF
      • web.xml
      • log4j.properties

Выписка из build.xml:

<target name="createForDEV"> 
    <delete file="environnement/DEV/${timeStampDay}/${warfile}.war" /> 
    <war destfile="environnement/DEV/${timeStampDay}/${warfile}.war" webxml="environnement/DEV/web.xml" update="true"> 
    <classes dir="build/classes" /> 
    <fileset dir="WebContent"> 
     <exclude name="WEB-INF/web.xml" /> 
     <exclude name="**/Thumbs.db" /> 
    </fileset> 
    </war> 
</target> 
<target name="createForINT"> 
    <delete file="environnement/INT/${timeStampDay}/${warfile}.war" /> 
    <war destfile="environnement/INT/${timeStampDay}/${warfile}.war" webxml="environnement/INT/web.xml" update="true"> 
    <classes dir="build/classes" /> 
    <fileset dir="WebContent"> 
     <exclude name="WEB-INF/web.xml" /> 
     <exclude name="**/Thumbs.db" /> 
     <exclude name="**/test.jsp" /> 
    </fileset> 
    </war> 
</target> 

У меня есть два файла конфигурации:

  • для окружающей среды DEV
  • для среды INT

Когда я делаю WAR-файл, я хотел бы проигнорировать некоторые файлы и заменить их другими конкретными файлами из каталога «environmentnement»?

  • При создании WAR в createForDEV цели, я хотел бы взять файл из ENVIRONNEMENT/DEV и замените соответствующие файлы
  • При создании WAR в createForINT цели, я хотел бы взять файл из ENVIRONNEMENT/INT и заменить соответствующим файлы
+0

Это ваше намерение не жестко кодировать имена переопределенных файлов в целевом объекте? То есть любые файлы, находящиеся в «DEV» или «INT», должны перезаписывать те из «WebContent»? – joescii

+0

@barnesjd У вас есть решение, даже если я жестко задаю имя файла переуплотнения в каждой цели? – Manu

+0

Вам не нужно жестко кодировать, если вы этого не хотите. Я отправлю решение в ближайшее время. – joescii

ответ

0

хитрость здесь заключается в использовании атрибута war задачи duplicate, и включать в себя несколько fileset элементов. Значение preserve для duplicate сообщает ему игнорировать повторяющиеся записи. Файлы в первом fileset (из DEV или INT) будут размещены на войне сначала. Любые дополнительные файлы в WebContent будут включены вторым fileset, но любые файлы, уже включенные из DEV или INT, будут игнорироваться.

<target name="createForDEV"> 
    <delete file="environnement/DEV/${timeStampDay}/${warfile}.war" /> 
    <war destfile="environnement/DEV/${timeStampDay}/${warfile}.war" webxml="environnement/DEV/web.xml" update="true" duplicate="preserve"> 
    <classes dir="build/classes" /> 
    <fileset dir="environnement/DEV"> 
     <exclude name="web.xml" /> 
    </fileset> 
    <fileset dir="WebContent"> 
     <exclude name="WEB-INF/web.xml" /> 
     <exclude name="**/Thumbs.db" /> 
    </fileset> 
    </war> 
</target> 
<target name="createForINT"> 
    <delete file="environnement/INT/${timeStampDay}/${warfile}.war" /> 
    <war destfile="environnement/INT/${timeStampDay}/${warfile}.war" webxml="environnement/INT/web.xml" update="true" duplicate="preserve"> 
    <classes dir="build/classes" /> 
    <fileset dir="environnement/INT"> 
     <exclude name="web.xml" /> 
    </fileset> 
    <fileset dir="WebContent"> 
     <exclude name="WEB-INF/web.xml" /> 
     <exclude name="**/Thumbs.db" /> 
     <exclude name="**/test.jsp" /> 
    </fileset> 
    </war> 
</target> 
+0

Спасибо за этот ответ, но он не работает так, как я хочу. Например, файл log4j.properties не находится в правильном каталоге в WAR. Он скопирован в $ {warfile} .war/log4j.properties, и мне это нужно в $ {warfile} .war/WEB-INF/log4j.properties – Manu

+0

OK ... Фактически, каталоги 'environnement/XXX' должны иметь той же файловой системы дерева. Он работает, если, например, log4j.properties похож на 'environnement/XXX/WEB-INF/log4j.properties'. Еще раз спасибо ! – Manu

Смежные вопросы