パッケージングの問題のMavenプラグイン調査

最近の研究ソファ箱舟プラグイン機構は、実行した後ことがわかったmaven clean install -DskipTestsターゲットディレクトリに再生しているときxxx.jar、地元の倉庫にインストールxxx.jar一貫性のないサイズ。

  • プラグイン・ターゲットのディレクトリサイズ

  • .m2下のサイズを差し込み

実際には、このような現象も、混乱力を見て、同じプロジェクト、同じコマンドを始めているが、二つの巨大な瓶のパッケージサイズのギャップを取得します。したがって、この問題のために、私は2つの点があると思います。

  • デバッグプラグインパッケージングプロセスの実行
  • ライフサイクルのMavenプラグインを理解します

デバッグプラグインパッケージングプロセスの実行

ここでは、リモートでデバッグIDEAが行われている能力を必要とします。2つのエンジニアリングは、以下に示すように、建設が私たちの主、MQ-クライアント箱舟 - プラグインプロジェクトは、上記のスクリーンショットと呼ばれ、他のウィジェットがパッケージ化されたソースプロジェクトである、があります。

リモート完了するためのステップバイ続いて、次のステップdebugの設定を。

1、デバッグモードを有効にするには、コマンドを使用してmvnDebug

主な作品にmq-client-ark-plugin、ルートディレクトリの下に行わmvnDebug install(以外は、もちろんinstall外であってもよいcompilepackagetestdeployなど)。

完全に実行する場合mvnDebug install、あなたはリスニングポート8000が塞が見ることができます。

2、リモートデバッグソースプロジェクトを設定

ではidea図のメイン画面の[ツール]メニューの下に選択し、見つけますEdit Configurations...

設定パネルを開いた後、左上隅を + 選択します Remote
該当するリモートデバッグパラメータを入力

  • Host :リモートターゲットホストアドレス、メインプロジェクトの前にローカルに立ち上げたので、これはですので、 localhost
  • Port:リモートリモートターゲットホストのオープンdebugポート
  • リモート開いてdebugパラメータを:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000

設定は、実行した後debug、あなたはすでにターゲットマシンに接続されている顔をしていることがあります。

ここでの主なプロジェクトのビューで、プロジェクトを実行せずに、ソースコードでdebugの実装後にボタンの前に、ブロックされておりmaven、実行のライフサイクルが始まりました:

実装はときに、ソースプロジェクトでブレークポイントを再生するためのように、上記に示したsofa-ark-maven-plugin場合、プラグイン遮断されます。

達人のライフサイクルの実行から、問題の原因を特定します

ターゲット・プラグインソースの上方に取得する必要がありdebug、次はプラグインのコードであり、オンモードdebug操作。ターゲットの場所にコードのブレークポイント行に直接ここでは、スペースを節約するには:

このコードの分析

  • 1、プロジェクトへのアクセスArtifact、この時点ではArtifactあるfile次のとおりです。
  • 2、再集合 File
  • 3、再集合 artifact

上記からのシングル場合はdebug難しい、実際には、問題が始まることを説明します。振り返ってみるにおけるだからここにメインプロジェクトmaven実行ログを:

表す赤い円部上図、maven installすべてのステージが経験しました。見ることができますsofa-ark-plugin-maven-pluginmaven-install-plugin戻って、これは何を意味するのでしょうか?

私たちは、xxx.jarは、製品の段階を詰め、そして次.m2は、製品がインストールされているターゲット・ディレクトリの下に得られていることを知っています。

もちろん、ここで説明されていないdeploydeployそれはinstallリモートリポジトリに、このような公開後に運転。

ので、今、見てsofa-ark-plugin-maven-plugin実行installプラグの前には、パックされた生成結果として、対象のファイルを置き換えるためにtarget、ディレクトリxxx.jarとローカル倉庫に設置xxx.jar矛盾。

概要

この記事では、二つの小さなポイントを含むルーチントラブルシューティングのプロセスを、文書1は、Mavenのプラグインをデバッグする方法で、もう一つはMavenのパッケージのライフサイクルを理解するのは簡単です。

具体的な研究のライフサイクル上のコードMavenのパッケージがされていないが、ここであなたはおそらく次を推測することができ、コマンドMavenを実行するとき、つまり、そこに中央コントローラに似たものがある、またはMavenのコマンド(またはライフサイクルを解析することにより、ライフサイクルのパイプラインを取得しますパイプラインは、実際に)プラグインの一連の組み立てられます。ライフサイクルまたはパイプラインは、その後、プラグインの実行方法の実施に続いて実行、トラバースプラグインを起動します。

おすすめ

転載: juejin.im/post/5d366c5ce51d45775c73ddb4