Netbeansを使用してMavenプロジェクトのリモートマシンでユニットテストを自動的に起動してデバッグしたいとします。デバッグ、出力ウィンドウなど、すべてのIDE機能が動作するはずです。このプロセスは、「Debug Focused Test Method」のワンクリックで完全に自動化されなければなりません。Netbeans/Mavenのリモートデバッグユニットテスト
答えて
解決策はmvn
コマンドをrsync
とssh
を実行するカスタムスクリプトで置き換えることです。両方のツールの魔法を介して、それは本当にうまく動作します。また、他のMaven IDEと移植可能でなければなりません。現在のガイドはbash
ですが、同じ考えはpowershell
、groovy
、さらには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を使用しようとしましたが、他のコマンドを実行する方法)
- Netbeansのディレクトリ
新しい
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を設定します。私はここでそれを行う方法を説明しません。
AllowTcpForwarding
がyes
または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>
使用するには、ツールバーのドロップダウンメニューで新しい設定を選択し、いつものように任意のMavenゴールを呼び出します。
- 私はこの設定をグローバルに設定する方法を探しています。あなたがこれを行う方法を知っているなら、教えてください!
- また、同じプロパティが設定されたカスタムアクションを作成します。
- JVMに組み込まれているリモートデバッグ機能と、Mavenのバージョン/依存性の追跡と、Netbeansの優れたMaven統合のおかげで、デバッグの経験がうまく機能することを言及する必要があります。私はあなたが他のプロジェクトのコードに簡単に入ることができること(そして特定のバージョンを解決できること)が本当に好きです。
誰でも私のスクリーンショットが表示されない理由を知っていますか? –
シュア/フェイルセーフプラグインは、箱から出してリモートデバッグをサポートしています。リモートマシン上http://maven.apache.org/surefire/maven-surefire-plugin/examples/debugging.html
IntelliJ IDEAで統合テストをデバッグする必要があるときにこれをいくつか使用しました。すべての統合前テストステップを実行するにはMavenが必要でした。 –
質問は、プロセスを自動化する方法です。 –
IntelliJ IDEAでは、これは特定の他の実行コンフィギュレーションを最初に実行する実行コンフィギュレーションを持つことで実行できます。 NetBeansで同様の機能がサポートされている場合は、任意の場所にブレークポイントを追加してから、configを実行してください。1)-Dmaven.surefire.debugでmavenビルドを実行します。 2)リモートデバッガを接続します。 あなたはどのようなオートメーションについて話していますか?テストを右クリックして、そのテストのみを実行しますか? –
- 1. 他のフォームのページのメールフィールドのみのDeviseへの登録
- 2. オラクルの列の値のセットからの一定の値のセット
- 3. リストの[:]のeleのpythonとリストの違いのeleの?
- 4. ボタンのフォントのホバーの色デフォルトのサイトへのホバーの色
- 5. ハイチャートの線グラフの2つの値の間の線の削除
- 6. Rのデータフレーム内の特定の列の最後の5つのオブジェクトへのアクセス
- 7. のAndroid Studioの+のcmakeの+ OpenGLは:Androidのメーカーの下でのOpenGL
- 8. 別のデータフレームの特定の行の1つのデータフレームからの値の検索
- 9. 2つのdivの中の1つのdivの中のテキストの下に
- 10. 2つの列の任意の2つの値の最大の差の式
- 11. FacebookのグラフAPIのためのphpのgetLoginUrlのためのPythonのequivelant
- 12. Androidのアーキテクチャのコンポーネントのベストプラクティスの段落の取り扱いライフサイクルのページでAndroidのアーキテクチャのコンポーネントのドキュメントで
- 13. Javaの別のテーブルのあるテーブルから別のテーブルの別のカラムへの1つのカラムの挿入
- 14. のPHPの.htaccessのmod_rewriteの問題
- 15. WP7のリストボックスのTextBlockのテキストの整列
- 16. JavaScriptのhtmlエディタのカーソルのフォーカスマウスのフォーカス
- 17. のAndriodのビットマップの代わりのRect
- 18. 他のテーブルの行の間のテーブル
- 19. Haskellのプリプロセッサ - HaskellのSDLのバインディングの
- 20. Googleのスクリプトの次のセルの列
- 21. htmlのテキストボックスの中央のnavbar-navの
- 22. OpenGLのシーン内の他のオブジェクトのリフレクション
- 23. WPFのグリッドの一部のセルのボーダー
- 24. のAndroidのOpenGL-ESのグラデーションの背景
- 25. JTreeの非リーフノードの後の空の行
- 26. のAdobeのFlex 4のテキストの高さ
- 27. リピータコントロールのonclientclick()のリンクボタンへのデータのバインド
- 28. のhtaccessのバグ - ページナビゲーションのためのルール
- 29. Symfony2の:フォームのビューのデータの問題
- 30. asp.netのGridViewの合計の列の値
なぜ?ユニットテストはIDEで実行できますが、もちろんデバッグできますか? – khmarbaise
@khmarbaise百万の理由があるかもしれません。私にとっては、JUnitの "テスト"を使って実際の仕事(ipythonノートブックのようなもの)を実行しているので、それらを私の大きなボックスで実行したいからです。 –