0

Consumer Driven Contract 実装の一環として、プロジェクトで PACT 依存関係を使用して JSON を PACT ファイルに変換しています。

PACT dependencies added in Pom.xml file -

pact-jvm-consumer-junit_2.11 (version - 3.5.0)

pact-jvm-model (version - 3.5.0)

pact-jvm-pact-broker (version - 3.6.7)

これらの PACT 依存関係はダウンロードされ、maven clean install コマンドを使用して jar にバンドルされます。そして、CloudOps VM とローカル サーバーで jar を実行すると、正常に動作し、API に対して成功の応答が返されます。同じ jar が PCF に正常にデプロイされ、API を実行しようとすると、PACT 依存関係クラスの 1 つ - au.com.dius.pact.model.RequestResponsePact に対してNoClassDefFoundErrorが返されます。

以下は、PCF ログからの完全なエラーです -

2020、レベル: ERROR、スレッド: http-nio-8080-exec-8、loggerName: com.test.sample.common.aop.logging.LoggingAspect、

メッセージ: com.test.sample.cdcc.v1.process.CdccUploadProcessV1.cdcUploadedFiles() で例外が原因 = 'NULL' および例外 = 'クラス au.com.dius.pact.model.RequestResponsePact を初期化できませんでした',

エラー: java.lang.NoClassDefFoundError : クラス au.com.dius.pact.model.RequestResponsePact を初期化できませんでした2020-05-04T15 :28:28.332+05:30 [APP/PROC/WEB/0] [OUT]

au.com.dius.pact.consumer.dsl.PactDslResponse.toPact(PactDslResponse.java:265) 2020-05-04T15:28:28.332+05:30 [APP/PROC/WEB/0] [送信]

com.test.sample.cdcc.util.JsonToPactUtil.convertJSONtoPACT (JsonToPactUtil.java:47) で

以下は、私たちが試したいくつかの変更です -

  1. これらの依存関係を下位バージョンに切り替える

  2. Mavenアセンブリプラグインを追加して、すべての依存関係を持つファットジャーを作成しようとしました

  3. 依存関係のスコープを提供およびコンパイルに変更する

  4. Maven jar プラグインにクラスパスを追加する

しかし、これらすべてがこの問題の解決に役立ったわけではありません。この問題を解決するための正しい方向を教えていただけますか?

以下は、jarを作成しようとしたいくつかの方法です

オプション1:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>${project.build.directory}/lib</classpathPrefix>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

オプション 2:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>    
                    <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin> 
4

0 に答える 0