2010-11-24 18 views
4

私のconfig.xmlファイルをantタスクで編集しようとしていましたが、誰も教えてくれませんでした。私はantタスクを使ってxmlを自動的に編集できるので、それは手動ですべての新しいブランチのために?antタスクを使用してxmlを編集する

+0

質問にさらに詳細を追加できますか?あまり一般的でない答えを与えることを可能にする。 –

答えて

1

最初にチェックするオプションは、Ant xsltタスクです。その使用方法については、Ant/XSLT Wikibookを参照してください。

1

これを行うためにgroovyを使用しました。 groovyは非常にJavaのようなので、静的なJavaメソッドと非常によく似たGroovyクラスを作成し、<groovy>タスクを使用してGroovyスクリプトにAntを呼び出すことができます(もちろんgroovyタスクdefを含める必要があります)。

groovyはJava構文を使用できるため、DOMクラスにアクセスするにはorg.w3c.com。*ライブラリを含めることができます。例えば

、specifed web.xmlファイルにリソースREF元素を添加示すコードスニペット: -

import org.w3c.dom.*; 

String web_xml_filename=args[0]; 
String res_ref_name=args[1]; 
Document doc = DomHelper.getDoc(web_xml_filename); 
Element rootNode=doc.getDocumentElement(); 
newNode = doc.createElement("resource-ref"); 
DomHelper.createElement(doc, newNode, "res-ref-name", res_ref_name); 
DomHelper.createElement(doc, newNode, "res-type", "javax.sql.DataSource"); 
DomHelper.createElement(doc, newNode, "description", description); 
DomHelper.createElement(doc, newNode, "res-auth", "Container"); 
rootNode.insertBefore(newNode, nodes.item(0)); 
DomHelper.writeDoc(doc, web_xml_filename, false); 

は、ANTから呼び出しグルービータスクを使用する: -

<groovy src="${e5ahr-groovy.dir}/addResoureRefToJBossWebXML.groovy" classpath="${groovy.dir}"> 
    <arg value="${jboss-web.xml}"/> 
    <arg value="jdbc/somesource/> 
    <arg value="java:jdbc/somesource"/> 
</groovy> 
0

ReplaceRegExpを使用できます。パターンと式のオプションでは、以下を使用することはできませんが、HTMLエンティティに置き換えることができます。たとえば、

<replaceregexp byline="true"> 
    <!-- In config.xml this looks like <myVariable></myVariable> --> 
    <regexp pattern="&lt;myVariable&gt;(.*)&lt;/myVariable&gt;" /> 
    <substitution expression="&lt;myVariable&gt;${myVariable.value}&lt;/myVariable&gt;" /> 
     <fileset dir="${user.dir}"> 
      <include name="config.xml" /> 
     </fileset> 
</replaceregexp> 
関連する問題