У меня была похожая проблема, когда у меня было несколько небольших сервлетов, которые одновременно выполняли фазу тестирования интеграции, что стало проблемой, поскольку они были настроены на использование одного и того же порта. Но благодаря цели build-helper-maven-plugin: Reserve-network-port можно получить произвольные номера портов, которые доступны. Затем я могу создать URL-адрес, содержащий http://localhost:[port]/[servletname],, то есть канал в тестовый класс Java.
Получение случайного порта :
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>reserve-network-port</id>
<goals>
<goal>reserve-network-port</goal>
</goals>
<phase>pre-integration-test</phase>
<configuration>
<portNames>
<portName>tomcat.http.port</portName>
</portNames>
</configuration>
</execution>
</executions>
Запуск tomcat с портом
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<configuration>
<port>${tomcat.http.port}</port>
<useTestClasspath>true</useTestClasspath>
</configuration>
....
</plugin>
Подача URL-адреса в интеграционный тест Java, который выполняется отказоустойчивым плагином
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.12.3</version>
....
<configuration>
<systemPropertyVariables>
<integration-test.url>http://localhost:${tomcat.http.port}/${project.build.finalName}/</integration-test.url>
</systemPropertyVariables>
</configuration>
</plugin>
Java-код
public class DownloadAreaIT {
private static final String URL = System.getProperty("integration-test.url");
}