首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法将环境变量用于Maven代理端口

无法将环境变量用于Maven代理端口
EN

Stack Overflow用户
提问于 2018-05-31 04:46:52
回答 1查看 1.8K关注 0票数 3

我能够使用settings.xml配置一个代理来成功地与Maven一起工作。

我决定进一步进行配置,并对代理的每个参数使用环境变量,如下所示:

代码语言:javascript
复制
<proxies>
  <proxy>
    <active>true</active>
    <protocol>https</protocol>
    <host>${env.PROXY_HOST}</host>
    <port>${env.PROXY_PORT}</port>
    <username>${env.PROXY_USER}</username>
    <password>${env.PROXY_PASSWORD}</password>
  </proxy>
</proxies>

这种配置--特别是对port使用环境变量--会导致Maven执行中断。首先,它传递以下警告:

代码语言:javascript
复制
[WARNING] 
[WARNING] Some problems were encountered while building the effective settings
[WARNING] Unable to parse element 'port', must be an integer (position: END_TAG seen ...<port>${env.PROXY_PORT}</port>... @29:40) caused by: java.lang.NumberFormatException: For input string: "${env.PROXY_PORT}" @conf/settings.xml, line 29, column 40
[WARNING] 

不久之后,由于端口不正确,执行失败:

代码语言:javascript
复制
org.eclipse.aether.transfer.MetadataTransferException: 
Connect to localhost:0 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused (Connection refused)

Maven能够在代理设置中解析主机、用户和密码的环境变量,但不能解析端口的环境变量。

以下是如何在bash脚本中设置环境变量的示例,然后是Maven命令

代码语言:javascript
复制
PROXY_PORT=8888
export PROXY_PORT

我也尝试过:

代码语言:javascript
复制
PROXY_PORT="8888"
export PROXY_PORT

为什么端口设置不像其他代理设置那样使用环境变量?

如何使用环境变量进行代理端口设置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-01 06:21:44

这是一个maven报告的错误:https://issues.apache.org/jira/browse/MNG-6401 (或者这里:https://github.com/apache/maven/pull/163#issuecomment-390888715 )

对主机进行替换:

代码语言:javascript
复制
  <proxies>
    <proxy>
      <active>true</active>
      <protocol>https</protocol>
      <host>${PROXY_HOST}</host>
      <port>${PROXY_PORT}</port>
      <username>${PROXY_USER}</username>
      <password>${PROXY_PASSWORD}</password>
    </proxy>
  </proxies>

它被替换成这样:

代码语言:javascript
复制
$ PROXY_PORT=100 PROXY_HOST=http://thehost PROXY_USER=TheUser PROXY_PASSWORD=ThePassword mvn help:effective-settings | grep -FA8  '<proxies>'
  <proxies>
    <proxy>
      <protocol>https</protocol>
      <username>TheUser</username>
      <password>***</password>
      <port>0</port>
      <host>http://thehost</host>
    </proxy>
  </proxies>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50613130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档