参照元:https ://blog.csdn.net/SnailMann/article/details/81710461
以前、私はSpringcloudマイクロサービスプロジェクトを実践していました。プロジェクトは非常に単純で、親クラス、レジストリ、プロバイダー、およびコンシューマーです。しかし、プロジェクトが作成された後、プロジェクトのパッケージ化は常に失敗します。常にjavaエンティティクラスに問題があるように促します。長い間絡み合ってやっと解決しました。まとめです。
何が問題ですか?詳細を説明します。問題はおおまかに次のようになります。
SpringCloudプロジェクトがあり、各マイクロサービスはSpringBootプロジェクトです。支払いプロジェクトの1つは、common-utilプロジェクトに依存しています。支払いプロジェクトと共通プロジェクトはどちらも、同じ親プロジェクトの子モジュールに属しています。
- この時点で、統合されたSpringCloudプロジェクトをサーバーにデプロイします。この時点で、jarパッケージを開き、jarをサーバーに配置し、java -jar * .jarコマンドを使用してSpringBootプロジェクトを開始する必要があります。
- まず、共通モジュールをローカルウェアハウスにパッケージ化するには、mvn clean install -DskipTests = trueと入力する必要があります。
- 次に、支払いプロジェクトmvn clean package -DskipTests = trueをパッケージ化します。
- 次に、mvnコマンドエラー(シンボルが見つかりません)、および支払いが共通のクラスを見つけることができないため、エラーが報告され、パッケージ化できません
私の分析の理由:
- 最初に、親プロジェクトのpomがモジュール共通プロジェクトを見逃していないかどうかを確認しましたが、そうではないことがわかりました。支払いと共通は両方とも同じ親プロジェクトの子モジュールであり、子プロジェクトの<親>も同じ親プロジェクトです。
- 次に、支払いが依存する共通パスまたはバージョン番号に問題があるかどうかを確認し、それが正しいことを確認しました。
- 次に、パッケージが.m2ウェアハウスでマークされていないか、パッケージが不完全であるかを確認します。調べてみたら何も見つかりませんでした
- 次に、pom.xmlの依存関係の構成が問題であるかどうか疑問に思いましたが、インターネット上でのSpringbootマルチモジュールプロジェクトのパッケージ化の失敗の問題は何の結果も得られませんでした。
最終的な解決策:
この解決策は、あるグループに助けを求めた後、大きな男によって解決されました。午後中ずっと私を悩ませていた問題を解決するのを手伝ってくれてありがとう。
私の問題は、spring-boot-maven-plugin
プラグインが共通プロジェクトのpomにインポートされることです。これにより、共通jarパッケージの入力が通常のjarパッケージとは異なります。jarパッケージが他のモジュールに依存している場合、他のモジュールからjarにアクセスできないように見えます。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
したがって、プロジェクトモジュールがSpringBootスタートアッププロジェクトではなくjarパッケージの依存関係としてのみ使用される場合は、プロジェクトspring-boot-maven-plugin
のpomにプラグインを構成しないでください。プラグインのインポート時に入力されたjarパッケージは、プラグインなしで入力されたjarパッケージとは異なります。覚えておいてください
総括する
分散型マイクロサービスプロジェクトでは、開始する必要のあるプロジェクトのpomファイルに上記の依存関係を追加します。エンティティクラス、ツールクラスなどを開始する必要はなく、継承するだけでよく、依存モジュールのサービスは上記を必要としません。頼る。親プロジェクトに上記の依存関係を追加する必要はありません。それらがすべて直接的または間接的に親プロジェクトを継承している限り、親プロジェクトパッケージは他の依存サービスをパッケージ化します。