使用代理

时间:2018-10-24 09:22:59

标签: java maven

我的机器正在使用代理连接互联网。但是在运行maven build命令时出现以下错误。它在我禁用代理时有效。我不明白为什么代理在这里很重要。

    [ERROR] Failed to execute goal on project flink-dist_2.11: Could not resolve dependencies for project org.apache.flink:flink-
dist_2.11:jar:1.7-SNAPSHOT: Failed to collect dependencies at 

    org.apache.flink:flink-shaded-hadoop2-uber:jar:1.7-SNAPSHOT:
 Failed to read artifact descriptor for org.apache.flink:flink-shaded-hadoop2-uber:jar:1.7-SNAPSHOT:
 Could not transfer artifact 
    org.apache.flink:flink-shaded-hadoop2-uber:pom:1.7-SNAPSHOT from/to apache.snapshots (https://repository.
apache.org/snapshots): Remote host closed connection during handshake: SSL peer shut down incorrectly -> [Help 1]

5 个答案:

答案 0 :(得分:1)

您是否尝试过$ {user.home} /。m2 / settings.xml上的settings.xml,请参见https://maven.apache.org/guides/mini/guide-proxies.html

在Windows7和更高版本中,它将是c:\ users \ user_name \ .m2

答案 1 :(得分:0)

Maven试图连接到远程存储库,以便将项目依赖项下放到其本地存储库中。这是一个网络连接,显然,您的代理配置使Maven尝试失败。

答案 2 :(得分:0)

握手期间远程主机关闭的连接:SSL对等体错误地关闭: 这表明您要实现的服务器主机已关闭,请首先验证连接是否建立良好,然后重试。

答案 3 :(得分:0)

可以通过相应地配置Mavan以使用代理服务器来尝试此操作:-https://dzone.com/articles/how-get-maven-working-through

答案 4 :(得分:0)

在我的工作中,我们遇到Windows工作站和NTLM2具有身份验证的代理服务器。

以下解决方案对我来说很好。该解决方案的好处是它也可以与Maven,Git和IntelliJ IDE一起使用。

要通过NTLM2代理进行访问,需要完成的建议步骤:

  1. 首先,您需要在PC上下载,配置和运行Cntlm代理。
  2. 在您的本地主机上启动Cntlm。该代理会将所有本地未认证的HTTP / HTTPS请求作为已认证的请求转发到公司代理。
  3. 配置Maven,Git,IntelliJ,Eclipse等以在localhost:3128上使用本地代理。您无需在此处配置身份验证。

详细信息:

  1. here下载Cntlm代理。
  2. 键入cntlm.exe -H -d your_domain -u your_username。 它将询问您的密码。输入它,Cntlm将为您提供哈希,如下所示:

    Password:
    PassLM          4E9C185932FER43543RWEFER33R4R34C
    PassNT          6E9F1254353RDR34RFSDWER3443RDC9A
    PassNTLMv2      43534RFWDWE3434RWFWER434C4FA224F  
    
  3. 编辑/检查您的cntlm.ini文件

    Username   <your-domain-username>
    Domain     <windows-donain-name>
    Auth       NTLMv2
    PassNTLMv2 <hash>
    Proxy      <proxy-host:port>
    NoProxy    localhost, 127.0.0.*, 10.*, 192.168.*
    Listen     3128
    
  4. 使用一个简单的脚本启动Cntlm:start-proxy.cmd

    cd %CNTLM_HOME%
    
    rem verbose mode
    cntlm -v -c cntlm.ini
    
    rem verbose with logfile
    rem cntlm -v -c cntlm.ini -T %CNTLM_HOME%\nctlm.log
    
    rem test configuration
    rem cntlm -c cntlm.ini -I -M http://google.com
    
  5. 停止Cntlm服务器:stop-proxy.cmd

    taskkill /IM cntlm.exe /F
    

然后,您可以创建两个cmd文件,这些文件会根据您的喜好更改Maven配置:

  1. mvn-internet.cmd

    call java8.cmd
    del %MAVEN_HOME%\conf\settings.xml
    copy %MAVEN_HOME%\conf\settings.xml.internet %MAVEN_HOME%\conf\settings.xml
    
  2. mvn-intranet.cmd

    call java8.cmd
    del %MAVEN_HOME%\conf\settings.xml
    copy %MAVEN_HOME%\conf\settings.xml.nexus %MAVEN_HOME%\conf\settings.xml
    
  3. settings.xml.internet

    <settings xmlns=...>
        <localRepository>...</localRepository>
        <proxies>
            <proxy>
                <id>my-proxy</id>
                <active>true</active>
                <protocol>http</protocol>
                <host>localhost</host>
                <port>3128</port>
                <nonProxyHosts>locahost</nonProxyHosts>
            </proxy>
        </proxies>
    </settings>
    
  4. settings.xml.nexus

    <settings>
        <localRepository>...</localRepository>
        <mirrors>
            <mirror>
                <id>local-lalm</id>
                <name>local-lalm</name>
                <url>https://nexus.xxx...</url>
                <mirrorOf>*</mirrorOf>
            </mirror>
        </mirrors>  
        <profiles>
            <profile>
                <id>use-local-repo</id>
                <activation>
                    <activeByDefault>true</activeByDefault>
                </activation>
                <repositories>
                    <repository>
                        <id>LALM-global</id>
                        <url>https://nexus.xxx...</url>
                    </repository>
                </repositories>
                <pluginRepositories>
                    <pluginRepository>
                        <id>LALM-global</id>
                        <url>https://nexus.xxx...</url>
                    </pluginRepository>
                </pluginRepositories>
                <properties>
                    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                </properties>
            </profile>
        </profiles>
    </settings>
    

对Git进行相同操作

  1. git-internet.cmd

    call java8.cmd
    rem git config --global http.proxy username:password@localhost:3128
    git config --global http.proxy localhost:3128
    
  2. git-intranet.cmd

    call java8.cmd
    git config --global --unset http.proxy
    

Cunfigure IntelliJ

  1. 设置IntelliJ以在localhost:3128上使用代理
  2. 在IntelliJ中设置Maven:更改Maven home directoryUser settings file的配置。

在那之后,您将在IntelliJ和命令行中使用相同的Maven配置,因此每种思维都将以相同的方式在IDE和命令行中工作。

您可以使用新的cmd文件在使用与不使用代理服务器之间进行即时更改。

此配置需要10分钟。然后您就可以忘记此代理问题了。