可以用环境变量替换maven -D系统属性吗?

时间:2016-07-25 13:19:26

标签: maven environment-variables system-properties

在某个环境中,我必须使用系统属性运行Maven来传递代理:

mvn -DproxySet=true -DproxyHost=... -DproxyPort=... clean install

我是否可以使用一些Maven envinronment变量来实现相同的目标?

我会想象这样的事情:

PROXY_SET=true PROXY_HOST=... PROXY_PORT=... mvn clean install

我想要实现的只是运行:

mvn clean install

无论我在哪里。 (我可以设置环境变量,告诉我我是否在代理之后)

更新:此问题与How do I use Maven through a proxy?不重复,因为我还想在没有代理的情况下无缝工作。我想在后面和互联网上工作,而不必输入-Dproxy...属性。

2 个答案:

答案 0 :(得分:4)

如果您通过使用MAVEN_OPTS的脚本调用Maven,例如mvn.bat

MAVEN_OPTS="-DproxySet=true -DproxyHost=..."

如果没有,那么你总是可以编写自己的包装脚本。

或者,您可以配置your proxy settings以从环境中读取值:

<proxies>
  <proxy>
    <id>example-proxy</id>
    <active>${env.PROXY_SET}</active>
    <host>${env.PROXY_HOST}</host>
    <port>${env.PROXY_PORT}</port>
    ...

答案 1 :(得分:1)

我会使用settings.xml和

这样的东西
<proxies>
  <proxy>
     <id>example-proxy</id>
     <active>true</active>
     <protocol>http</protocol>
     <host>proxy.example.com</host>
     <port>8080</port>
     <username>proxyuser</username>
     <password>somepassword</password>
     <nonProxyHosts>www.google.com|*.example.com</nonProxyHosts>
   </proxy>
 </proxies>

https://maven.apache.org/guides/mini/guide-proxies.html