我给你带来了好消息和坏消息。 一个坏消息是,没有箱外解决办法。 好消息是<条码>xmlproperty。 由于暴露了保护的<代码>Node()方法,这项任务相当可扩展。 在这方面,你可以做些什么:
1. 导言 • 制作和编辑ant.jar(在以下表格中可找到一个:,从Maven上找到):
package pl.sobczyk.piotr;
import org.apache.tools.ant.taskdefs.XmlProperty;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
public class MyXmlProp extends XmlProperty{
@Override
public Object processNode(Node node, String prefix, Object container) {
if(node.hasAttributes()){
NamedNodeMap nodeAttributes = node.getAttributes();
Node nameNode = nodeAttributes.getNamedItem("name");
if(nameNode != null){
String name = nameNode.getNodeValue();
String value = node.getTextContent();
if(!value.trim().isEmpty()){
String propName = prefix + "[" + name + "]";
getProject().setProperty(propName, value);
}
}
}
return super.processNode(node, prefix, container);
}
}
2. 结 论 现在,你只需要把这项任务看上去。 简便方式:在名录中建立<条码>task的子中,有您的附本——和;拷贝汇编了MyXmlProp级,其目录结构为task
。 页: 1
3. Import task to your ant script, you should end up with something like:
<target name="print">
<taskdef name="myxmlproperty" classname="pl.sobczyk.piotr.MyXmlProp">
<classpath>
<pathelement location="task"/>
</classpath>
</taskdef>
<myxmlproperty file="config.xml" prefix="build"/>
<echo message="name = ${build.resources.string[id]}"/>
</target>
4. 第四条第4款 页: 1
What we did here is defining a special fancy square brackets syntax for your specific case :-). For some more general solution task extension may be a little more complex, but everything is possible :). Good luck.