0

在 ANT 脚本中,有没有办法将“环境”目录中的文件包含到不同的战争中?

我的文件系统树:

  • 环境
    • 开发者
      • web.xml
      • log4j.properties
    • INT
      • web.xml
      • log4j.properties
  • 网页内容
    • 网络信息
      • 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 文件时,我想忽略一些文件并用“环境”目录中的其他特定文件替换它们?

  • createForDEV目标中制作WAR时,我想从环境/开发中获取文件并替换相应的文件
  • createForINT目标中制作WAR时,我想从环境/INT中获取文件并替换相应的文件
4

1 回答 1

0

这里的技巧是利用任务的duplicate属性war,并包含多个fileset元素。preserve的值duplicate告诉它忽略重复的条目。第一个fileset(来自DEVINT)中的文件将首先放置在战争中。中的任何其他文件WebContent都将包含在第二个fileset中,但任何已经包含DEVINT将被忽略的文件。

<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>
于 2013-10-07T16:32:03.373 回答