【问题标题】:Maven `mvn -PautoInstallPackage clean install` fail from VM guest to hostMaven `mvn -PautoInstallPackage clean install` 从 VM 来宾到主机失败
【发布时间】:2018-04-06 03:26:19
【问题描述】:

TLDR;

以下命令无法在 Virtual Box 来宾操作系统中运行以构建工件并将其安装到在主机操作系统上运行的 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 Enterprise - 这是我的 AEM 6.3 Author 实例运行的地方
  • Guest OS 是 Ubuntu 16.04.4 LTS - 这是我进行开发的地方
  • 计算机已连接到位于公司代理后面的网络
  • 使用 CNTLM、http_proxyhttps_proxy 环境变量和用于 Maven 的 ~/.m2/settings.xml 在 VM 来宾上设置代理
  • Maven 可以毫无问题地从 Internet 获取所有依赖项
  • npm installcurl 等所有其他命令都可以正常从 Internet 获取内容
  • 我已将 10.* 添加到 CNTLM 和 Maven settings.xml 文件的白名单中
  • 在 Virtual Box 设置中,我添加了仅主机适配器
  • 我可以通过浏览器通过http://10.0.2.2:4502连接到在主机操作系统上运行的AEM实例

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

非常感谢任何帮助。

【问题讨论】:

  • 能否提供更多错误日志?哪个插件和什么操作产生了这样的错误?
  • @YuriyAlevohin - 我已经在这里上传了错误日志paste.ee/p/dph1n

标签: java maven virtualbox aem


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我在日志中看到的内容:

    • 插件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-ContinueSet parameter http.connection.timeout = 5000 in log https://paste.ee/p/dph1n#s=0&l=2481
    • 在 5 秒内没有来自 servere 的响应(可能是日志中没有时间戳)。日志中的消息[INFO] 100 (continue) read timeout. Resume sending the requesthttps://paste.ee/p/dph1n#s=0&l=2500
    • plugin/HttpClient 发送 HTTP 请求正文
    • 服务器返回带有100-continue 的意外响应。出乎意料,因为客户已经没有等待它。

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

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

    【讨论】:

    • 非常感谢您的详细回复。我会试试这个,让你知道。我只使用 CNTLM 作为身份验证代理 (localhost:3128)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 2023-03-03
    • 2021-07-03
    • 1970-01-01
    • 2018-08-29
    相关资源
    最近更新 更多