34

私は 2 つの最上位 Maven プロジェクト と を持ってbackendおりfrontend、それぞれのペースでバージョンを進めています。それぞれに複数のモジュールがあるためdependencyManagement、親/集約 POM のセクションで依存関係のバージョンを定義し、バージョン番号のプロパティを使用します。

できれば恣意的に、バージョン番号を使用してプロパティをきれいに更新したいのですがfrontend、ライブ アップストリーム バージョンを一致させる必要があります。を使用してみましversions:update-propertyたが、その目標は完全に機能していないようです。実際に一致するアップストリーム バージョンがあるかどうかに関係なく、次のデバッグ出力が得られます。

$ mvn versions:update-property -Dproperty=frontend.version -DnewVersion=0.13.2  -DautoLinkItems=false -X
...
[DEBUG] Searching for properties associated with builders
[DEBUG] Property ${frontend.version}
[DEBUG] Property ${frontend.version}: Looks like this property is not associated with any dependency...
[DEBUG] Property ${frontend.version}: Set of valid available versions is [0.9.0, 0.9.1, 0.9.2, 0.9.3, 0.9.4, 0.9.5, 0.10.0, 0.10.1, 0.11.0, 0.12.0, 0.13.0, 0.13.1, 0.13.2, 0.13.3]
[DEBUG] Property ${frontend.version}: Restricting results to 0.13.2
[DEBUG] Property ${frontend.version}: Current winner is: null
[DEBUG] Property ${frontend.version}: Searching reactor for a valid version...
[DEBUG] Property ${frontend.version}: Set of valid available versions from the reactor is []
[INFO] Property ${frontend.version}: Leaving unchanged as 0.13.1
[INFO] ------------------------------------------------------------------------

を指定しまし-DautoLinkItems=falseたが、効果がないようです。versions-maven-plugin一致する依存関係についてすべての POM をスキャンし、手を投げて終了します。また、プラグイン構成でそのプロパティをsearchReactor設定しようとしました。falseプラグインは、(1)依存関係を無視するように明示的に指定した場合でも、依存関係を誤ってスキャンし、(2)明示的な特定の一致を除外することさえあるようです。

versions-maven-pluginバージョン番号を検証せずに、または別の目標を使用して、Maven プロパティ エントリを特定の値に書き換える簡単な方法はありますか? XML を理解しないようなツールは避けたいと思いsedますが (同様の質問で推奨されているように)、単純な XPath 操作で問題ありません。

4

7 に答える 7

2

私は同じ問題を抱えていて、ファイル内の pom プロパティを変更するものは何も見つかりませんでした。あなたが提案したように、私はsedを使用することになりました:

cat pom.xml | sed -e "s%<util.version>0.0.1-SNAPSHOT</util.version>%<util.version>$bamboo_planRepository_branch</util.version>%" > pom.xml.transformed;
rm pom.xml;
mv pom.xml.transformed pom.xml;
于 2016-08-23T12:07:54.743 に答える
0

pom.xml でプロパティを定義するとき、 update-property が機能するようにする場合は、間隔として宣言する必要があります。

つまり、frontend.version が次のように定義されていることを確認してください。

<frontend.version>0.13.1</frontend.version>

-DnewVersion=0.13.2 を設定すると、プラグインはその値を有効な値として認識しません。間隔として定義する代わりに、プラグインが機能します。

<frontend.version>[0.13.0,0.13.2]</frontend.version>

私のテストの1つで、次の結果が得られました。

mvn versions:update-property -Dproperty=absis.version -DnewVersion=[2.20.4] -X


    [DEBUG] Property ${test.version}: Set of valid available versions is [2.19.0-RC-REVISION-1, 2.19.0-RC0.1, 2.19.0-RC0.2, 2.19.0-RC0.3, 2.19.0-RC0.4, 2.19.0-RC0.5, 2.19.0-RC0.6, 2.19.0-RC0.7, 2.19.0-RC1, 2.19.0-RC2, 2.19.0-RC3, 2.19.0, 2.19.0-revision, 2.19.0-revision2, 2.19.0.2, 2.19.1, 2.19.2, 2.19.3, 2.19.4, 2.20.0-RC0, 2.20.0-RC0.1, 2.20.0-RC1, 2.20.0-RC2, 2.20.0-RC3, 2.20.0, 2.20.0-PRUEBA-VERSION, 2.20.0-PRUEBA-VERSION-2, 2.20.0-PRUEBA-VERSION-3, 2.20.0i-RC1, 2.20.0i-RC1.1, 2.20.0i, 2.20.0i.2, 2.20.1, 2.20.2, 2.20.4, 2.20.5, 2.20.5-LT, 2.20.5.1, 2.20.6i-RC1, 2.21.0-RCtest1, 2.21.0-RCtest2]
[DEBUG] Property ${test.version}: Restricting results to [2.20.4,2.20.4]
[DEBUG] Property ${test.version}: Current winner is: 2.20.4
[DEBUG] Property ${test.version}: Searching reactor for a valid version...
[DEBUG] Property ${test.version}: Set of valid available versions from the reactor is []
[INFO] Updated ${test.version} from [2.19.0,2.21.0-SNAPSHOT] to 2.20.4

プロパティ値を範囲に変更する必要があります。

poms 定義で範囲を使用できないため、残念です。

于 2016-07-06T07:42:14.947 に答える
0

に問題がupdate-propertyありましたが、なんとか動作させることができましたset-property:

mvn versions:set-property -Dproperty=mypropery -DnewVersion=myvalue
于 2020-10-22T06:23:55.837 に答える