从VM guest虚拟机到主机,Maven`mvn -PautoInstallPackage clean install`失败

时间:2018-04-06 03:26:19

标签: java maven virtualbox aem

TLDR;

以下命令无法在Virtual Box guest虚拟机操作系统中运行,无法在主机操作系统上运行的AEM 6.3 Author实例上构建和安装工件。

mvn -PautoInstallPackage clean install

主机位于公司代理后面,客户操作系统配置了CNTLM和Maven代理文件。

更长版本

我使用VirtualBox VM进行开发 - 主要是为了缓解企业软件安装限制。尝试运行以下命令来构建和部署AEM 6.3多模块项目,但它仍然失败。以下是maven命令:

mvn -PautoInstallPackage clean install

构建停止超越这一点:

[INFO] Discarding unexpected response: HTTP/1.1 100 Continue

当我使用调试标志(-X)运行相同的命令时,我在错误之前得到以下行:

...
[DEBUG] Request body sent
[DEBUG] << "HTTP/1.1 100 Continue[\r][\n]"
[DEBUG] << "HTTP/1.1 100 Continue[\r][\n]"
[DEBUG] << "Proxy-Connection: keep-alive[\r][\n]"
[DEBUG] << "Connection: keep-alive[\r][\n]"
[DEBUG] << "[\r][\n]"
[INFO] Discarding unexpected response: HTTP/1.1 100 Continue

我的设置的一些关键细节:

  • 主机操作系统是Windows 7企业版 - 这是我的AEM 6.3作者实例正在运行的地方
  • 访客操作系统是Ubuntu 16.04.4 LTS - 这是我开发的地方
  • 计算机已连接到位于公司代理后面的网络
  • 代理服务器在VM guest虚拟机上设置了CNTLM,http_proxyhttps_proxy env变量和~/.m2/settings.xml for Maven
  • Maven可以毫无问题地从Internet获取所有依赖项
  • npm installcurl等所有其他命令可以很好地从Internet上获取内容
  • 我已将10.*添加到CNTLM和Maven settings.xml文件中的白名单
  • 在Virtual Box设置中,我添加了Host-only Adapter
  • 我可以通过浏览器http://10.0.2.2:4502
  • 连接到主机操作系统上运行的AEM实例

完整错误日志文件:https://paste.ee/p/dph1n

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

从VM中部署到主机上的AEM根本不需要代理。

尝试在Content Package maven插件的配置部分设置<useProxy>false</useProxy>。有关更多详细信息,请参阅content-package-maven-plugin文档。

答案 1 :(得分:0)

我在日志中看到的内容:

  • 插件content-package-maven-plugin尝试将已编译的项目发送到http://10.0.2.2:4502/crx/packmgr/service.jsp`
  • 插件使用Jakarta Commons-HttpClient/3.1进行HTTP
  • HttpClient中的插件集属性http.protocol.expect-continue = true,这意味着它可以正确处理HTTP响应100-Continue
  • 发送HTTP请求插件/ HttpClient的标头在超时5秒内等待100-Continue(日志https://paste.ee/p/dph1n#s=0&l=2481Set parameter http.connection.timeout = 5000
  • 5秒内没有来自servere的响应(可能是日志中没有时间戳)。日志[INFO] 100 (continue) read timeout. Resume sending the request https://paste.ee/p/dph1n#s=0&l=2500
  • 中的消息
  • plugin / HttpClient发送HTTP请求正文
  • 服务器返回100-continue的意外回复。出乎意料,因为客户已经没有等待它。

尝试在timeout配置(https://paste.ee/p/dph1n#s=0&l=2448)中增加content-package-maven-plugin。从服务器获得响应可能还不到5秒。

<强>已更新 我不确定您是否使用squid作为代理(日志中的端口3128)。但如果确实如此,您可以尝试使用解决方法 - 禁用在代理上传递请求的标头Expect: 100-continue,如此处所述http://www.squid-cache.org/Versions/v3/3.1/cfgman/ignore_expect_100.html