【问题标题】:How do I use the new JBoss Maven repository from behind a corporate firewall?如何从公司防火墙后面使用新的 JBoss Maven 存储库?
【发布时间】:2011-03-07 08:45:51
【问题描述】:

我依赖于Hibernate 3.5.3,它只能通过新的JBoss Maven repository 提供给我,它托管在SonatypeNexus 上,并且所有 URL 都使用 HTTPS 保护。

我可以通过网络浏览器从公司防火墙后面访问此存储库。但 Maven 无法解析工件。

我在构建开始时看到以下警告:

[WARNING] Unable to get resource 'org.hibernate:hibernate-core:pom:3.5.3-Final' from repository jboss.org (https://repository.jboss.org/nexus/content/repositories/releases): Error transferring file: repository.jboss.org

我希望在 global settings.xml 的部分中添加以下内容应该对我有用:

<proxy>
    <id>http.proxy</id>
    <active>true</active>
    <protocol>http</protocol>
    <username>me</username>
    <password>private</password>
    <host>proxy.somecompany.com</password>
    <port>80</port>
    <nonProxyHosts>*.somecompany.com</nonProxyHosts>
 </proxy>
<proxy>
    <id>https.proxy</id>
    <active>true</active>
    <protocol>https</protocol>
    <username>me</username>
    <password>private</password>
    <host>proxy.somecompany.com</password>
    <port>80</port> <!-- tried 443 too -->
    <nonProxyHosts>*.somecompany.com</nonProxyHosts>
 </proxy>

但它对我不起作用。

在我的 pom.xml 中,我声明了以下存储库依赖项:

 <repository>
     <id>jboss.org</id>
     <name>JBoss Repository</name>
     <url>https://repository.jboss.org/nexus/content/repositories/releases</url>
 </repository>

我只能使用 Maven 2.0.8,但我已经检查过,它也不适用于 Maven 2.2.1。

【问题讨论】:

  • 您使用的是哪个版本的 Maven?你也可以运行mvn -X 来得到真正的错误吗?
  • @Pascal - 我在这里处于黑暗时代。我必须使用 Maven 2.0.8!
  • 只要不是 Maven 2.0.4。但是使用 -X 运行对于了解问题的根本原因非常有帮助。顺便说一句,我认为您不需要第二个代理元素,protocol 用于配置代理,而不是远程主机使用的协议。
  • @bmatthews68:您确定您使用的是正确的凭据吗?我意识到这是一个明显的建议,类似于要求用户验证他们的“损坏”计算机是否已插入,但即使是我们中最好的人也会发生密码输入错误。
  • @Derek 与 http 代理的用户名/密码相同,并且运行良好。

标签: java maven-2 jboss https nexus


【解决方案1】:

这已在最近的 Maven 版本中得到修复(从 3.0-alpha 开始,不记得确切的问题 #)。适用于 3.0.3-SNAPSHOT

【讨论】:

    【解决方案2】:

    如果 NTLM 是问题所在,并且如果您的项目使用 Eclipse,那么您可以尝试使用以下参数启动 Eclipse。由于我们的代理,当我在访问 eclipse 更新站点时遇到问题时,我曾尝试过一次。

    -Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient  
    -Dhttp.proxyPort=8080  
    -Dhttp.proxyHost=<Proxy Host Name>  
    -Dhttp.proxyUser=<>  
    -Dhttp.proxyPassword=<>  
    -Dhttp.nonProxyHosts=localhost  
    

    来源:http://wiki.eclipse.org/ECF_Filetransfer_Support_for_NTLMv2_Proxies

    【讨论】:

      【解决方案3】:

      这实际上取决于贵公司在设置防火墙方面所做的工作。如果防火墙需要 NTLMv2 身份验证,那么 Maven 不会单独执行此操作(它应该很快就可以工作,但我尝试了 v3 alpha 没有任何运气)。

      虽然它可能不是您正在寻找的理想解决方案,但我发现此类事情的最佳情况是在防火墙内安装 CNTLM 和本地存储库代理(例如 Sonatype Nexus、@987654323 @,或Apache Archiva

      CNTLM 只是普通的作品 (TM)。安装和使用大约需要 15 分钟,从那以后我就不必考虑了。

      我使用过 Artifactory 和 Nexus,它们都具有可比性。我已经读到 Artifactory 预装了大多数流行的 Maven 站点,因此您可能不必花太多时间去摆弄它。 (我绝对必须向 Nexus 添加几个第三方存储库)。您可以很好地比较它们here

      此解决方案的另一个好处是您的构建应该会显着加快(您的团队会感谢您)。

      【讨论】:

      • 我们确实有一个内部存储库,但我没有管理权限。他们花了 5 天时间为我添加 JBoss!所以我下次遇到这个障碍时需要解决方案。 NTLM 问题听起来像是我的问题。我会进一步调查。
      【解决方案4】:

      嘿,Mathews,我只是想使用浏览器访问您在此处发布的 Jboss 存储库 URL,它给了我一个空白页面。对 jboss 存储库进行了一些谷歌搜索,给了我这个 url。

      http://repository.jboss.org/maven2/

      我想这应该可以解决您的问题。这只是存储库 URL 错误的问题。

      进一步补充,存储库具有休眠核心版本 3.5.1 而不是 3.5.3。猜猜这对您来说应该不是问题。

      【讨论】:

      • 存储库 URL 没有错,JBoss is now using Nexus,Hibernate 3.5.3 在“旧”存储库中不可用。
      • JBoss 已弃用旧存储库 URL,并且不会将版本发布到旧存储库。在我当前的项目中,我非常依赖 JBoss 组件,所以 Hibernate 只是问题的一个实例。
      猜你喜欢
      • 1970-01-01
      • 2010-12-26
      • 2017-02-27
      • 2013-08-29
      • 2019-06-23
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多