If statement 包含基于条件的ant修改选择器
我正在修改现有的ant脚本以支持差异构建。为此,我在文件集中使用了modified selector,只查找修改过的文件。但问题是,当我进行完整构建时,我需要绕过基于某些属性或参数的修改过的过滤器。如下图所示。有没有办法做到这一点If statement 包含基于条件的ant修改选择器,if-statement,ant,ant-contrib,fileset,If Statement,Ant,Ant Contrib,Fileset,我正在修改现有的ant脚本以支持差异构建。为此,我在文件集中使用了modified selector,只查找修改过的文件。但问题是,当我进行完整构建时,我需要绕过基于某些属性或参数的修改过的过滤器。如下图所示。有没有办法做到这一点 <project name="test" default="dt" basedir="."> <target name="dt1"> <copy todir="ant_temp2">
<project name="test" default="dt" basedir=".">
<target name="dt1">
<copy todir="ant_temp2">
<fileset dir="ant_temp1">
<if>
<equals arg1="${ABC}" arg2="true" />
<then>
<modified update="true" />
</then>
</if>
<exclude name="*.txt"/>
</fileset>
</copy>
</target>
<target name="dt">
<antcall target="dt1">
<param name="ABC" value="true" />
</antcall>
</target>
<target name="dt2">
<antcall target="dt1" />
</target>
</project>
< >如果我使用<代码> dt<代码>目标调用上述的Ant脚本,那么我需要考虑<代码>修改< /COD>和<<代码>排除< /代码> <代码>文件集任务。如果使用<代码> dt2调用,那么我需要在<代码>文件集任务中考虑<代码>排除< /代码>。
我无法使用上述脚本,因为文件集
不支持嵌套的if
任务。这就是为什么我在寻找另一种方法来做到这一点。请提出一些方法
注:我不想创建两个具有相同复制任务的目标,一个是在
文件集中包含修改的和排除,另一个是仅包含排除的目标 您可以使用if
和属性,除非
属性处于启用状态,使其执行以属性为条件。您应该将条件部分移动到其自己的目标(如果尚未完成),然后向目标添加if
或,除非条件
我不完全清楚您的示例,但这可能意味着将副本
放在两个目标中,包括修改的
部分,仅放在其中一个目标中。在这种情况下,您可以使每个目标都以相同的属性为条件—一个作为if
,另一个作为,除非我使用了下面的ant脚本来实现我的要求
<project name="test" default="dt" basedir=".">
<patternset id="fs1">
<exclude name="*.txt"/>
</patternset >
<target name="dt1">
<copy todir="ant_temp2">
<fileset dir="ant_temp1">
<patternset refid="fs1" />
</fileset>
</copy>
</target>
<target name="dt3">
<copy todir="ant_temp2">
<fileset dir="ant_temp1">
<modified update="true" />
<patternset refid="fs1" />
</fileset>
</copy>
</target>
</project>
我已经创建了可重用的模式集,开发人员将更新该模式集中的排除项,我正在将该模式集用于正常和增量构建。您好,sudocode,谢谢您的帮助,但我不想用复制任务创建两个目标,一个包含modified
和exclude
,另一个只包含exclude
,因为这是现有脚本,开发人员将定期添加更多exclude
s。如果我制定了两个目标,那么他们必须在两个地方添加exclude
。