マルチモジュールのMavenプロジェクト(たとえばfoo-web)にWARモジュールがあり、Webサービスを実現しています。次に、foo-cliがあります。これは、Webサービスクライアントを実装し、いくつかの単体テストでテストします。
これを機能させるために、テストフェーズの前に次のようにJettyを起動します。
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>foo-web</artifactId>
<version>${project.version}</version>
<type>war</type>
<scope>test</scope>
</dependency>
...
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.5.v20120716</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<useTestScope>true</useTestScope>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8080</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
</configuration>
<executions>
<execution>
<id>start-jetty</id>
<phase>process-test-classes</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<daemon>true</daemon>
</configuration>
</execution>
</executions>
</plugin>
これは、foo-cliモジュール内から「mvntest」を実行している間は完全に機能します(他に何も指定する必要がなく、自動的に停止します)。ただし、上位レベル(foo)に移動して、そこから「mvn test」を発行しようとすると、つまり、プロジェクト内のすべてのモジュールに対してすべてのテストを実行しようとすると、「404-見つかりません」で失敗します。出力から、オーバーレイ(戦争依存関係)が完全に無視されているように見えることがわかります。
助けてくれてありがとう。