Ответ 1
Я решил, что, предоставляя все настройки, связанные с прокси-сервером, в Maven с помощью свойств системы, когда это необходимо, а также некоторые настройки, которые можно обнаружить во время выполнения, если эти параметры присутствуют в моей родительской POM.
1) В средах, где требуются настройки прокси-сервера, создайте RC файл для Maven ("~/.mavenrc"
или "%PROFILE%\mavenrc_pre.bat"
) с помощью MAVEN_OPTS
внутри. Например:
set MAVEN_OPTS=-Dhttp.proxyHost=10.0.1.250 -Dhttp.proxyPort=3128 -Dhttp.nonProxyHosts="localhost|*.local|*.mylab.com"
2) Определите, были ли предоставлены параметры прокси-сервера и построены аргументы для Surefire:
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<version>2.0</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>execute</goal>
</goals>
</execution>
</executions>
<configuration>
<source>
<![CDATA[
// Collect proxy settings to use in Surefire and Failsafe plugins
def settings = "";
System.properties.each { k,v ->
if ( k.startsWith("http.") || k.startsWith("https.") )
{
// We have to escape pipe char in 'nonProxyHosts' on Windows
if (System.properties['os.name'].toLowerCase().contains('windows'))
v = v.replaceAll( "\\|", "^|" );
settings += "-D$k=$v ";
}
}
project.properties["proxy.settings"] = settings;
]]>
</source>
</configuration>
</plugin>
3) Используйте подготовленные аргументы в плагинах Surefire и Failsafe:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<argLine>${proxy.settings}</argLine>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<argLine>${proxy.settings}</argLine>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
</configuration>
</plugin>
Наслаждайтесь:)