Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to use proxy only when a specific profile is active in Maven?

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?

like image 953
Utku Avatar asked Sep 06 '16 11:09

Utku


People also ask

Does Maven use system proxy?

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.


2 Answers

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.

like image 169
A_Di-Matteo Avatar answered Oct 19 '22 18:10

A_Di-Matteo


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"
like image 45
javabrett Avatar answered Oct 19 '22 18:10

javabrett