【发布时间】:2014-02-09 12:18:52
【问题描述】:
我可以像这样在可用标签中设置变量吗?
<available file="${inf.root}/schema_params/@{componame}-schema.sql"
type="file"
variable="schema.file" />
因为当我在可用标签中使用属性而不是变量时,它的值是不可变的。但我想在运行时更改它。下面是我的代码。我想通过我的组件列表复制 1 个文件检查。如果文件存在,我必须复制并移动它。否则我必须跳过逻辑。但发生的事情是,如果我不使用这段代码,
<var name="schema.params.file" unset="true"/>
<property name="schema.params.file" value="false"/>
<var name="scripts.dir" unset="true"/>
<property name="scripts.dir" value="false"/>
在第一次迭代中如果 schema.params.file,scripts.dir 如果文件存在则设置为 true,即使文件不存在,它也不会在下一次迭代中被覆盖。所以我添加了上面的代码。但是现在上面的代码总是将这些值再次设置为 false。我怎样才能克服在每次迭代中覆盖这 2 个 schema.params.file,scripts.dir 的问题?
<for list="${t1.@{componentname}}" param="installableid" delimiter="${line.separator}">
<sequential>
<available file="${infinys.root}/schema_params/@{componentname}-schema_params.sql"
type="file"
property="schema.params.file" />
<available file="${stage.dir}/@{componentname}/@{installableid}/schema/install/scripts"
type="dir" property="scripts.dir"/>
<if>
<and>
<equals arg1="true" arg2="${schema.params.file}" />
<equals arg1="true" arg2="${scripts.dir}" />
</and>
<then>
<copy file="${infinys.root}/schema_params/@{componentname}-schema_params.sql"
todir="${stage.dir}/@{componentname}/@{installableid}/schema/install/scripts"
failonerror="false" />
<move file="${stage.dir}/@{componentname}/@{installableid}/schema/install/scripts/@{componentname}-schema_params.sql"
tofile="${stage.dir}/@{componentname}/@{installableid}/schema/install/scripts/schema_params.sql"
failonerror="false"/>
<chmod file="${stage.dir}/@{componentname}/@{installableid}/schema/install/scripts/schema_params.sql" perm="775"/>
<var name="schema.params.file" unset="true"/>
<property name="schema.params.file" value="false"/>
<var name="scripts.dir" unset="true"/>
<property name="scripts.dir" value="false"/>
</then>
</if>
</sequential>
</for>
【问题讨论】:
标签: java xml ant jar ant-contrib