2016-05-19 10 views
1

以下は私のPOMの関連する部分はある -は、どのように私は、ビルドで複数回プラグインmavenのexecを実行してください

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.5.0</version> 
    <executions> 
     <execution> 
      <id>StartHub</id> 
      <phase>test</phase> 
      <goals> 
       <goal>exec</goal> 
      </goals> 
      <configuration> 
       <executable>java</executable> 
       <arguments> 
        <argument>-jar</argument> 
        <argument>${basedir}/src/lib/Hub/selenium-server-standalone-2.53.0.jar</argument> 
        <argument>-role</argument> 
        <argument>hub</argument> 
        <argument>-throwOnCapabilityNotPresent</argument> 
        <argument>false</argument> 
        <argument>-newSessionWaitTimeout</argument> 
        <argument>20000</argument> 
       </arguments> 
      </configuration> 
     </execution> 
     <execution> 
      <id>StartNode</id> 
      <phase>test</phase> 
      <goals> 
       <goal>exec</goal> 
      </goals> 
      <configuration> 
       <executable>java</executable> 
       <arguments> 
        <argument>-jar</argument> 
        <argument>${basedir}/src/lib/Node/selenium-server-standalone-2.53.0.jar</argument> 
        <argument>-hub</argument> 
        <argument>http://127.0.0.1:4444/register/grid</argument> 
        <argument>-port</argument> 
        <argument>5555</argument> 
        <argument> 
         Dwebdriver.chrome.driver=${basedir}/chromedriver.exe</argument> 
       </arguments> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

私は瓶(セレンスタンドアロンサーバー)を実行するには、execプラグインを使用しようとしていましたで2つの構成(ハブとノード)。

私の問題は、最初の "実行"タグのペアの間で指定された構成でjarが1回だけ実行されることです。私は広範囲に解決策を探し求めましたが、私が見つけた唯一の事は異なる実行のIDが異なる必要があることでした。私はまだ他のものの実行をコメントアウトすると、私はそれらのいずれかを正常に実行することができますが、私はまだ2回Jarファイルを実行するように見えることができません。

私はEclipseでプロジェクトを実行しているので、理想的にはPOM.xmlを右クリックしてRun-asをクリックし、「Mavenテスト」を選択することをお勧めします。

答えて

1

これはMavenの実行上の問題ではなく、実行していることに関係する問題です。接続が確立されないノードのリスニングを停止するブロッキングプロセス(最初のサーバー) t start)。以下に、あなたのポンポンを変更

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.5.0</version> 
    <executions> 
     <execution> 
      <id>StartHub</id> 
      <phase>test</phase> 
      <goals> 
       <goal>exec</goal> 
      </goals> 
      <configuration> 
       <executable>java</executable> 
       <arguments> 
        <argument>-version</argument> 
       </arguments> 
      </configuration> 
     </execution> 
     <execution> 
      <id>StartNode</id> 
      <phase>test</phase> 
      <goals> 
       <goal>exec</goal> 
      </goals> 
      <configuration> 
       <executable>java</executable> 
       <arguments> 
        <argument>-version</argument> 
       </arguments> 
      </configuration> 
     <a/execution> 
    </executions> 
</plugin> 

それは完全に二回Javaのバージョンを印刷し、2つのexecの実行を実行します。注:スニペットは、質問のコピー&ペーストです。javaコマンドの引数をversionオプションに置き換えるだけです。


あなたはおそらく探していることは、バックグラウンドで2つのコマンドを実行するか、少なくとも実行される第2を得るために、非ブロッキングの方法で、その後、いくつかのテストを実行する(ビルドを進めることであるI推定する)。

exec-maven-pluginを使用する代わりに、maven-antrun-pluginを使用して2つのseleniumコマンドを起動して、達成方法についてthis SO questionを確認してください。さらに注意点として


、あなたはおそらく代わりにmaven-failsafe-pluginの使用を検討し、統合テストを実行し、pre-integration-test相に上記の処刑を装着し、適切にそれらをきれいにするために、post-integration-test相の間にそれらを停止する必要があります。

+0

お返事ありがとうございました。私はこれをプロセスビルダを使って処理しましたが、なぜそれが動作していないのか、そしてAntrunプラグインについて知っておいてよかったです。私はフェイルセーフプラグインを認識していますが、testNGで提供されている注釈を使用して処理できないテストの前後に何もする必要がないので、私はそれを実行しませんでした。私は、Mavenを介してそのようなタスクを処理することは、プログラム的に行うことよりも固有の利点があるかどうかを知ることに興味があります。しかし、私はそれがまったく別の質問だと思います! もう一度あなたの時間のおかげで!私はこれを答えとして受け入れています – Savvy

関連する問題