16

テストのグループを実行するために一緒に使用される場合と使用されない場合がある2つのプロファイルがあります。それらはそれぞれ実行するために異なるvmargsを必要としますが、それらを一緒に使用する場合は、それらを互いに追加してもかまいません。

私が探しているのは、argLineを現在の値と私が設定した値を連結したものに設定する方法です。

私はそれが同じくらい簡単になることを望んでいました

<argLine>${argLine} -DnewVMArg</argLine>

これを実現するために私ができる同様のことはありますか?

私はそれを修正しようとしましたが、その結果、Mavenが再帰的なサイクルでスタックしました。以下に文書化されています。

私の最近の試みは、プロパティを<my.argLines></my.argLines>グローバルに定義してから、プロファイル内でこれを変更することでした。

各プロファイルのプロパティブロックで、プロパティを次のように上書きするように設定しました。

<my.argLines>${my.argLines} -myUniqueToProfileArgs</my.argLines>

プロファイルの各確実な構成では、次のように設定<argLines>します。

<argLines>${my.argLines}</argLines>

これは私には論理的に適合しますが、それが評価する方法は明らかに噛み合わないでしょう。

4

4 に答える 4

2

-D システム プロパティのみを扱う場合は、<argLine> の代わりに <systemPropertyVariables> を使用すると、それらが自然に結合されます。プロファイルの 1 つに次のものがあります。

<systemPropertyVariables>
    <propertyFromProfile1>value1</propertyFromProfile1>
</systemPropertyVariables>

2 番目のプロファイル:

<systemPropertyVariables>
    <propertyFromProfile2>value2</propertyFromProfile2>
</systemPropertyVariables>

また、このアプローチにより、子 pom で親 pom の個々のプロパティをオーバーライドできることにも言及する価値があります。

于 2014-01-11T16:17:08.700 に答える
0

お気づきのように、プロパティはそれ自体を参照できません。

プロファイルごとに異なるプロパティを定義し、最終的に確実な呼び出しでそれらを連結する必要があります。

<properties>
  <!-- it is a good idea not to use empty or blank properties -->
  <first.props>-Dprofile1Active=false</first.props>
  <second.props>-Dprofile2Active=false</second.props>
</properties>
...
    <!-- surefire configuration -->
    <argLine>${first.props} ${second.props}</argLine>    
...
<profile>
  <id>first</id>
  <properties>
    <first.props>-myUniqueToProfile1Args</first.props>
  </properties>
</profile>
<profile>
  <id>second</id>
  <properties>
    <second.props>-myUniqueToProfile2Args</second.props>
  </properties>
</profile>

空でないデフォルト値にも注意してください。Maven には、それらを処理する驚くべき方法があります。安全のために、無害な空白以外のデフォルト値を使用してください ( Maven の「Null」引数と「空」引数を参照してください) 。

于 2013-12-17T13:40:25.613 に答える
0

Eclipse: Window -> Preferences -> TestNG -> Maven 「argLine」のチェックを外します。

于 2016-09-08T13:49:22.437 に答える