Maven `mvn -PautoInstallPackage clean install` 从 VM 来宾到主机失败

Maven `mvn -PautoInstallPackage clean install` fail from VM guest to host

TLDR;

以下命令无法 运行 在 Virtual Box guest OS 中构建和安装工件到主机 运行 上的 AEM 6.3 Author 实例 OS .

mvn -PautoInstallPackage clean install

主机在企业代理后面,来宾 OS 配置了 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

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

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

非常感谢任何帮助。

我在日志中看到的内容:

  • 插件 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
  • 发送 header 秒的 HTTP 请求后 plugin/HttpClient 等待 100-Continue 超时 5 秒(Set parameter http.connection.timeout = 5000 在日志 https://paste.ee/p/dph1n#s=0&l=2481 中)
  • 服务器在 5 秒内没有响应(可能是日志中没有时间戳)。日志中的消息 [INFO] 100 (continue) read timeout. Resume sending the request https://paste.ee/p/dph1n#s=0&l=2500
  • plugin/HttpClient 发送 HTTP 请求 body
  • 服务器 return 对 100-continue 的意外响应。出乎意料,因为客户已经不在等待了。

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

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

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

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