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

Can one replace the maven -D system properties with environment variables?

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

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

是否有一些 Maven 环境变量可用于实现相同的目的?

我会想象这样的事情:

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

我要实现的只是运行:

mvn clean install

不管我在哪里。 (我可以设置环境变量来告诉我是否在代理后面)

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

我会将 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

如果您通过使用 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>
    ...