最近の研究のプラグイン機構ソファ箱、および実行した後ことがわかったmaven clean install -DskipTests
ターゲットディレクトリに再生しているときxxx.jar
、地元の倉庫にインストールxxx.jar
一貫性のないサイズ。
プラグイン・ターゲットのディレクトリサイズ
.m2下のサイズを差し込み
実際には、このような現象も、混乱力を見て、同じプロジェクト、同じコマンドを始めているが、二つの巨大な瓶のパッケージサイズのギャップを取得します。したがって、この問題のために、私は2つの点があると思います。
デバッグプラグインパッケージングプロセスの実行
ライフサイクルのMavenプラグインを理解します
01デバッグプラグインパッケージ実装プロセス
ここでは、リモートでデバッグIDEAが行われている能力を必要とします。2つのエンジニアリングは、以下に示すように、建設が私たちの主、MQ-クライアント箱舟 - プラグインプロジェクトは、上記のスクリーンショットと呼ばれ、他のウィジェットがパッケージ化されたソースプロジェクトである、があります。
リモート完了するためのステップバイ続いて、次のステップdebug
の設定を。
(1)デバッグモードmvnDebugをオンにするコマンドを使用して
主な作品にmq-client-ark-plugin
、ルートディレクトリの下に行わ mvnDebug install
(以外は、もちろんinstall
外であってもよいcompile
、package
、test
、deploy
など)。
完全に実行する場合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
插件时阻塞了。
02 从 maven 执行的生命周期找出问题根源
上面已经搞定了对目标插件源码的 debug
模式的开启,那么下面就是对插件代码进行 debug
操作。节省篇幅,这里直接将断点放在目标代码行位置:
分析这段代码
1、获取到项目的
Artifact
,此时Artifact
的file
为:2、重新设置的
File
3、重新设置了
artifact
如果单从上面 debug
来看,其实很难解释开篇的那个问题。那么这里在回过头来看下 主工程的 maven
执行日志:
如上图中圈红的部分,代表 maven install
所经历的所有阶段。可以看到 sofa-ark-plugin-maven-plugin
是在 maven-install-plugin
后面,那这意味着什么呢?
我们知道在 target 目录下得到的 xxx.jar 是打包阶段的产物,而 .m2 下面的是 install 的产物。
当然这里没有涉及到
deploy
,deploy
是install
之后的操作,比如发布到远程仓库。
现在再来看,因为 sofa-ark-plugin-maven-plugin
在执行 install
插件之前将 目标文件给替换了,所以导致打包生成的 target
目录下的 xxx.jar
和 安装到本地仓库的 xxx.jar
不一致。
03 小结
この記事では、二つの小さなポイントを含むルーチントラブルシューティングのプロセスを、文書1は、Mavenのプラグインをデバッグする方法で、もう一つはMavenのパッケージのライフサイクルを理解するのは簡単です。