I'm using httpunit to access a server.
I need to configure the proxy settings for this (http and https).
I set the configuration in the settings.xml file, but surefire seems to ignore it!?
I want to avoid to duplicate the configuration as much as possible.
In the surefire plugin configuration I tried:
<systemPropertyVariables>
<http.proxyHost>${http.proxyHost}</http.proxyHost>
</systemPropertyVariables>
and
<argLine>-Dhttp.proxyHost=${http.proxyHost}</argLine>
and
<argLine>-Dhttp.proxyHost=${settings.proxies[protocol=http].host}</argLine>
and several other combinations.
I print the system properties in the unit test with:
for (String propertyName : new TreeSet<String>(System.getProperties().stringPropertyNames())){
System.out.println(propertyName + ": " + System.getProperty(propertyName));
}
The only thing which worked so far are explicit values such as:
<systemPropertyVariables>
<http.proxyHost>myProxy</http.proxyHost>
</systemPropertyVariables>
or
<argLine>-Dhttp.proxyHost=myProxy</argLine>
But as I said, I don't want to duplicate the configuration, if possible.
How can I use the proxy settings set in the settings.xml file in unit tests?
I solved that by providing all proxy-related settings to Maven via system properties when needed, plus some tweaks to detect in runtime if those settings present in my parent POM.
1) In environments where proxy settings are required, create RC file for Maven (
"~/.mavenrc"
or"%PROFILE%\mavenrc_pre.bat"
) withMAVEN_OPTS
inside. For example:2) Detect if proxy settings were provided and build arguments for Surefire:
3) Use prepared arguments in Surefire and Failsafe plugins:
Enjoy :)