如果使用Ant不可用,我需要添加/替换文件内容。如果指定的文件内容已存在,则Ant不应再次添加/替换内容。
<application>
<display-name>customear</display-name>
<module>
<ejb>custom.ear</ejb>
</module>
</application>
<application>
<display-name>customear</display-name>
<module>
<ejb>custom.ear</ejb>
</module>
<!-- this below content i need to find if exixts or not, if not add the content or do nothing. -->
<module>
<ejb>abcd.ear</ejb>
</module>
</application>
我没有选择使用第三方Ant XMLTask或Ant-Contrib任务,因为那些需要额外的JAR文件才能支持。
到目前为止,我已尝试过以下目标。多次运行Ant脚本会导致目标多次添加文件内容。
<target name="update-custom-ear" >
<replace file="${basedir}/application.xml">
<replacetoken><![CDATA[</application>]]></replacetoken>
<replacevalue>
<![CDATA[ <module>
<web>
<web-uri>abcd.war</web-uri>
<context-root>/*</context-root>
</web>
</module> ]]>
</replacevalue>
</replace>
</target>
请帮帮我。
答案 0 :(得分:0)
在下面的示例中,depends
目标已添加update-custom-ear
属性。 depends
属性更改update-custom-ear
以依赖名为does-abcd.ear-exist-in-application.xml
的新目标。
如果does-abcd.ear-exist-in-application.xml
已包含字符串abcd.ear-exists-in-application.xml
,则新application.xml
目标会设置名为abcd.ear
的属性。
update-custom-ear
目标然后使用unless
来确定它是否应该运行。
<target name="does-abcd.ear-exist-in-application.xml">
<condition property="abcd.ear-exists-in-application.xml">
<resourcecontains resource="application.xml" substring="abcd.ear"/>
</condition>
</target>
<target
name="update-custom-ear"
depends="does-abcd.ear-exist-in-application.xml"
unless="abcd.ear-exists-in-application.xml"
>
<echo>abcd.ear is missing in application.xml. Call replace here.</echo>
</target>
does-abcd.ear-exist-in-application.xml:
update-custom-ear:
[echo] abcd.ear is missing in application.xml. Call replace here.