複数の Maven pom ファイルを更新できる自動リリース スクリプトを作成しようとしています。現在、「リリース スクリプト」は、古いバージョン番号が常に一意であることを前提とした手順と sed コマンドの例を含むテキスト ファイルです。(から1.8-SNAPSHOT
に更新する場合、pom 内の1.9-SNAPSHOT
すべての出現箇所がこのプロジェクトを参照し、更新する必要があると想定されます)1.8-SNAPSHOT
XML を適切に読み取って、更新が必要な特定の要素を特定することで、これをより安全にしたいと考えています。結果の変更は git リポジトリにコミットされるため、空白に不必要な変更を加えたくありません。
これまでのところ、この XQuery スクリプトを思いつきました
declare boundary-space preserve;
declare namespace mvn="http://maven.apache.org/POM/4.0.0";
declare variable $new_version external;
replace value of node //*[mvn:artifactId/text()="geowebcache"][mvn:groupId/text()="org.geowebcache"]/mvn:version with $new_version
私はxqillaで実行します:
xqilla -i pom.xml -u -v new_version "TEST" test.xq
これにより、期待どおりにバージョン番号が更新されますが、空白の多くが削除されます。これは、見苦しく紛らわしいコミットになります。
私は xqilla や XQuery には慣れていませんが、依存関係を最小限に抑えたいと考えています。Ubuntu 12.04 のメイン リポジトリで入手できる、推移的な依存関係がほとんどない 1 つの小さなパッケージは、私が探しているものです。