Ant 宏使用元素的内容作为属性的值
我想使用名为“soql”的元素的内容作为替换过滤器中的属性。我想要实现的是将文件中的值替换为元素的内容。在这种情况下,我倾向于不使用属性,因为该值应包含在 CDATA 块中
<macrodef name="exportdata">
<attribute name="file"/>
<attribute name="object"/>
<element name="soql"/>
<sequential>
<echo message="Exporting @{object}"/>
<mkdir dir="data/exports"/>
<copy file="data/config/template-process-conf.xml" tofile="data/config/process-conf.xml" overwrite="true" failonerror="true"/>
<replace file="data/config/process-conf.xml">
<replacefilter token="_endpoint_" value="${sf.serverurl}"/>
<replacefilter token="_username_" value="${sf.username}"/>
<replacefilter token="_password_" value="${encryptedpassword}"/>
<replacefilter token="_object_" value="@{object}"/>
<replacefilter token="_soql_" value="@{soql}"/>
<replacefilter token="_file_" value="data/exports/@{file}.csv"/>
<replacefilter token="_keyfile_" value="data/config/key.txt"/>
</replace>
<java classname="com.salesforce.dataloader.process.ProcessRunner" classpath="lib/DataLoader.jar" failonerror="true">
<sysproperty key="salesforce.config.dir" value="data/config"/>
<arg line="process.name=export@{object}"/>
</java>
</sequential>
</macrodef>
I want to use the content of the element named "soql" as an attribute in a replace filter. What I wanted to achieve is to replace a value in a file with the contents of an element. In this case I am inclined to not use an attribute as the value should be enclosed within CDATA block
<macrodef name="exportdata">
<attribute name="file"/>
<attribute name="object"/>
<element name="soql"/>
<sequential>
<echo message="Exporting @{object}"/>
<mkdir dir="data/exports"/>
<copy file="data/config/template-process-conf.xml" tofile="data/config/process-conf.xml" overwrite="true" failonerror="true"/>
<replace file="data/config/process-conf.xml">
<replacefilter token="_endpoint_" value="${sf.serverurl}"/>
<replacefilter token="_username_" value="${sf.username}"/>
<replacefilter token="_password_" value="${encryptedpassword}"/>
<replacefilter token="_object_" value="@{object}"/>
<replacefilter token="_soql_" value="@{soql}"/>
<replacefilter token="_file_" value="data/exports/@{file}.csv"/>
<replacefilter token="_keyfile_" value="data/config/key.txt"/>
</replace>
<java classname="com.salesforce.dataloader.process.ProcessRunner" classpath="lib/DataLoader.jar" failonerror="true">
<sysproperty key="salesforce.config.dir" value="data/config"/>
<arg line="process.name=export@{object}"/>
</java>
</sequential>
</macrodef>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您有最新版本的 Ant (>1.7),您可以使用 string 资源来执行此操作。这是一个简单的例子:
结果:
If you have a reasonably up-to-date version of Ant (>1.7) you may be able to use a string resource to do this. Here's a simple example:
Result: