Web サービスで使用するための jar ファイルを生成する Maven プロジェクトがあります。を使用して実行する統合テストがありますjetty-maven-plugin
。
コンパイルされた jar ファイルで統合テストを実行するには、<systemPath>${project.build.directory}/${project.build.finalName}.${project.packaging}</systemPath>
. 統合テストは、コンパイルされた jar ファイルを使用し、ディレクトリから Web アプリを正しく作成して、期待どおりに実行されますsrc/test
。
したがって、このプロジェクトのビルドに関しては、このセットアップは非常にうまく機能します。
問題は、リリース プロセス中に展開される POM ファイルにまだsystemPath
依存関係があることです。これは、jar を使用するプロジェクトがビルド中にエラーを報告していることを意味します。エラーは、jar ファイルが「絶対パスを指定する必要がある」ことを示しています。これらのビルドは失敗しませんが、ログが雑然としていて誤解を招きます。
systemPath
Maven リポジトリにデプロイされている POM からこれを削除しようとしています。どうすればこれを行うことができますか?
参考までに、プロジェクトの POM の関連部分を次に示します。
<build>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.0.7.v20131107</version>
<configuration>
<webAppSourceDirectory>${project.basedir}/src/test/webapp</webAppSourceDirectory>
<classesDirectory>${project.build.testSourceDirectory}</classesDirectory>
<useTestClasspath>true</useTestClasspath>
</configuration>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<scope>system</scope>
<systemPath>${project.build.directory}/${project.build.finalName}.${project.packaging}</systemPath>
</dependency>
</dependencies>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<daemon>true</daemon>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>