Ant スクリプトでjavax.persistence.jdbc.url
は、次の persistence.xml ファイルのプロパティの値を置き換える必要があります。
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="testPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>org.somecompany.domain.SomeEntity</class>
<validation-mode>NONE</validation-mode>
<properties>
<property name="testprop" value="testval" />
</properties>
</persistence-unit>
</persistence>
XMLTask をダウンロードし、次のことを試しました。
<xmltask source="${persistence-xml-file-path}" dest="${persistence-xml-file-path}_replaced" report="true">
<replace path="/:persistence/:persistence-unit/:properties/:property[:name/text()='testprop']/:value/text()" withText="replaced" />
</xmltask>
残念ながら、これは機能しません。エラーは発生しません。ソースと宛先の両方の xml ファイルの内容がコンソールに表示され、それらは同じです。上記の置換命令が実行されないかのようです (または、更新するプロパティを特定しません)。
=== パトリスからの次の応答 ===========================================
これは、永続タグのスキーマ定義なしで機能するようです:
<xmltask source="${persistence-xml-file-path}" dest="${persistence-xml-file-path}_replaced" report="true" failWithoutMatch="true">
<attr path="persistence/persistence-unit/properties/property[@name='testprop']" attr="value" value="replaced"/>
</xmltask>
これは、永続タグのスキーマ定義で機能するようです:
<xmltask source="${persistence-xml-file-path}" dest="${persistence-xml-file-path}_replaced" report="true" failWithoutMatch="true">
<attr path="//*[@name='testprop']" attr="value" value="replaced"/>
</xmltask>
処理する必要がある属性は非常にユニークであるため、属性パス全体を調べる必要なく、これで問題なく機能します。