Mavenのプラグインのパッケージングの問題の調査、理解できますか?

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

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

    1


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


    1


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

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

  • ライフサイクルのMavenプラグインを理解します

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

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

1


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

(1)デバッグモードmvnDebugをオンにするコマンドを使用して

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


1


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

リモートデバッグを設定する(2)ソースプロジェクト

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

1設定パネルを開いた後、左上隅を+選択しますRemote1

該当するリモートデバッグパラメータを入力

1


  • Host :リモートターゲットホストアドレス、メインプロジェクトの前にローカルに立ち上げたので、これはですので、 localhost

  • Port:リモートリモートターゲットホストのオープンdebugポート

  • リモート開いてdebugパラメータを:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000

配置完成之后,执行 debug ,可以看下已经连接到了目标机器:

1


在来看主工程这里,在源码工程没有执行上面的 debug 按钮之前,一直都是阻塞的,执行之后 maven 执行的生命周期开始了:

1


如上图,因为在源码工程中打了断点,所以当执行到 sofa-ark-maven-plugin 插件时阻塞了。

02 从 maven 执行的生命周期找出问题根源

上面已经搞定了对目标插件源码的 debug 模式的开启,那么下面就是对插件代码进行 debug 操作。节省篇幅,这里直接将断点放在目标代码行位置:


1


分析这段代码


1


  • 1、获取到项目的 Artifact ,此时 Artifactfile 为:1

  • 2、重新设置的 File

  • 3、重新设置了 artifact


1


如果单从上面 debug 来看,其实很难解释开篇的那个问题。那么这里在回过头来看下 主工程的 maven 执行日志:

1

如上图中圈红的部分,代表 maven install 所经历的所有阶段。可以看到 sofa-ark-plugin-maven-plugin 是在  maven-install-plugin 后面,那这意味着什么呢?

我们知道在 target 目录下得到的 xxx.jar 是打包阶段的产物,而 .m2 下面的是 install 的产物。

当然这里没有涉及到 deploydeployinstall 之后的操作,比如发布到远程仓库。

现在再来看,因为 sofa-ark-plugin-maven-plugin 在执行 install 插件之前将 目标文件给替换了,所以导致打包生成的 target 目录下的 xxx.jar 和 安装到本地仓库的 xxx.jar 不一致。

03 小结

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



おすすめ

転載: blog.51cto.com/14453419/2422809