2016-05-29 9 views
1

Netbeansを使用してMavenプロジェクトのリモートマシンでユニットテストを自動的に起動してデバッグしたいとします。デバッグ、出力ウィンドウなど、すべてのIDE機能が動作するはずです。このプロセスは、「Debug Focused Test Method」のワンクリックで完全に自動化されなければなりません。Netbeans/Mavenのリモートデバッグユニットテスト

+0

なぜ?ユニットテストはIDEで実行できますが、もちろんデバッグできますか? – khmarbaise

+0

@khmarbaise百万の理由があるかもしれません。私にとっては、JUnitの "テスト"を使って実際の仕事(ipythonノートブックのようなもの)を実行しているので、それらを私の大きなボックスで実行したいからです。 –

答えて

0

解決策はmvnコマンドをrsyncsshを実行するカスタムスクリプトで置き換えることです。両方のツールの魔法を介して、それは本当にうまく動作します。また、他のMaven IDEと移植可能でなければなりません。現在のガイドはbashですが、同じ考えはpowershellgroovy、さらにはcmdで実装することができます。

  • cd /usr/local/netbeans-8.1/java/maven/bin/
  • sudo mv mvn mvn.orig

    • Netbeansのディレクトリ/usr/local/netbeans-8.1/java/maven/bin/では、mvnスクリプトの名前を変更(。適切にすべての引数が壊れ思え維持しながら、私はNashornを使用しようとしましたが、他のコマンドを実行する方法)
  • 新しいmvnスクリプトを作成します。

    #!/bin/bash 
    
    if [ -z "$REMOTE" ] ; then 
        SCRIPTDIR=$(dirname "$0") 
        "$SCRIPTDIR/mvn.orig" "[email protected]" 
    else 
        if [ -z "$REMOTE_BASE_DIR" ] ; then 
         echo "ERROR: Please set environment variable REMOTE_BASE_DIR to the folder which contains the project directory" 
         exit 
        fi 
    
        PROJECT_DIR=$(basename "$(pwd)") 
        REMOTE_PROJECT_DIR=$REMOTE_BASE_DIR/$PROJECT_DIR/ 
        ARGS= 
        for var in "[email protected]" 
        do 
        ARGS="$ARGS \\\"$var\\\"" 
        done 
    
        echo "Syncing project directory..." 
        (set -x; rsync -aczhW --progress --delete --exclude '.git' --exclude 'target' $RSYNC_OPTS ./ "$REMOTE:\"$REMOTE_PROJECT_DIR\"") 
    
        echo "Executing maven..." 
        if [ "$REMOTE_PORT" = '${jpda.address}' ] ; then 
         (set -x; ssh ${REMOTE} "cd \"$REMOTE_PROJECT_DIR\"; mvn $ARGS") 
        else 
         (set -x; ssh -R $REMOTE_PORT:localhost:$REMOTE_PORT ${REMOTE} "cd \"$REMOTE_PROJECT_DIR\"; mvn $ARGS") 
        fi 
    fi 
    
  • リモートマシンを設定します。
    • mvnをインストールするか、Netbeansのをインストールし、パス上のmvnを置くどちらか。私は後で選んだが、いずれかはうまくいくはずだ。
    • sshを設定します。私はここでそれを行う方法を説明しません。 AllowTcpForwardingyesまたはremote/etc/ssh/sshd_configに設定されていることを確認してください。 「
    • 新しいConfiguration
    • での作成、プロジェクトのプロパティに行く

    • リモートマシンに(クリーン&ビルドを含む)すべてのMavenのアクションを転送する新しいNetbeansの設定を作成しますプロパティを設定する:add:

      Env.REMOTE_BASE_DIR=<directory on the server that will contain your project directory> 
      Env.REMOTE=<address of remote machine> 
      Env.REMOTE_PORT=${jpda.address} 
      Env.RSYNC_OPTS=<optional, but could be another --exclude> 
      

      screenshot

    • 使用するには、ツールバーのドロップダウンメニューで新しい設定を選択し、いつものように任意のMavenゴールを呼び出します。

    • 私はこの設定をグローバルに設定する方法を探しています。あなたがこれを行う方法を知っているなら、教えてください!
  • また、同じプロパティが設定されたカスタムアクションを作成します。
  • JVMに組み込まれているリモートデバッグ機能と、Mavenのバージョン/依存性の追跡と、Netbeansの優れたMaven統合のおかげで、デバッグの経験がうまく機能することを言及する必要があります。私はあなたが他のプロジェクトのコードに簡単に入ることができること(そして特定のバージョンを解決できること)が本当に好きです。
+0

誰でも私のスクリーンショットが表示されない理由を知っていますか? –

-1

シュア/フェイルセーフプラグインは、箱から出してリモートデバッグをサポートしています。リモートマシン上http://maven.apache.org/surefire/maven-surefire-plugin/examples/debugging.html

+0

IntelliJ IDEAで統合テストをデバッグする必要があるときにこれをいくつか使用しました。すべての統合前テストステップを実行するにはMavenが必要でした。 –

+0

質問は、プロセスを自動化する方法です。 –

+0

IntelliJ IDEAでは、これは特定の他の実行コンフィギュレーションを最初に実行する実行コンフィギュレーションを持つことで実行できます。 NetBeansで同様の機能がサポートされている場合は、任意の場所にブレークポイントを追加してから、configを実行してください。1)-Dmaven.surefire.debugでmavenビルドを実行します。 2)リモートデバッガを接続します。 あなたはどのようなオートメーションについて話していますか?テストを右クリックして、そのテストのみを実行しますか? –

関連する問題