I would like to use proxy only when a specific profile is active. To accomplish this, my guess is to parameterize the <active>
property of <proxy>
element. However, I am not exactly sure how to accomplish this.
Question: How can I use proxy only when a specific profile is active?
By default, Maven will use the first active proxy definition it finds. Note that this is the protocol the proxy uses – the protocol of our requests (ftp://, http://, https://) is independent of this.
You could try the following approach:
<settings>
<proxies>
<proxy>
<id>httpproxy</id>
<active>${activate.proxy}</active>
<protocol>http</protocol>
<host>some.host</host>
<port>8080</port>
<nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>
</proxy>
</proxies>
<profiles>
<profile>
<id>proxy-on</id>
<properties>
<activate.proxy>true</activate.proxy>
</properties>
</profile>
<profile>
<id>proxy-off</id>
<properties>
<activate.proxy>false</activate.proxy>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>proxy-off</activeProfile>
</activeProfiles>
</settings>
So by default the proxy-off
profile would be active, which would set activate.proxy
to false
and as such active
of proxy
to false
.
Then executing with:
mvn clean install -Pproxy-on
Would activate the proxy-on
profile and the whole chain should result to true
for active
.
This does not answer the original question, which asks about control-by-profile, but one workaround is to ignore settings.xml
proxies and set MAVEN_OPTS
when you need to activate a proxy:
export MAVEN_OPTS="-Dhttp.proxyHost=my-proxy-server -Dhttp.proxyPort=80 -Dhttp.nonProxyHosts=*.my.org -Dhttps.proxyHost=my-proxy-server -Dhttps.proxyPort=80 -Dhttps.nonProxyHosts=*.my.org"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With