문제

프록시를 통해 Maven을 사용한 경험을 공유하고 싶습니다.

예외와 같은 메시지와 같은 메시지에 직면 할 가능성이 높습니다.

repository metadata for: 'org.apache.maven.plugins' could not be retrieved from 
repository: central due to an error: Error transferring file: Connection refused: connect

또는

[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-clean-
plugin:2.5: Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its 
dependencies could not be resolved: Failed to read artifact descriptor for 
org.apache.maven.plugins:maven-clean-plugin:jar:2.5

Maven이 프록시 서버를 사용하도록 구성하는 방법은 무엇입니까?

도움이 되었습니까?

해결책 6

이들은 두 가지 문제로 인해 발생합니다.

  1. settings.xml에 프록시 구성을 추가해야합니다. 다음은 사용자 이름 필드의 트릭입니다. 도메인 username처럼 보이는지 확인하십시오. 도메인을 거기에 설정 하고이 정확한 슬래시를 넣는 것이 ''가 중요합니다. 사용하고 싶을 수도 있습니다u003C![CDATA[]]> 비밀번호에 비 XML 친화적 인 문자가 포함 된 경우 태그.
  2. Maven 2.2.0은 때때로 프록시를 통해 전혀 작동하지 않는다는 것을 알았습니다. 2.2.1은 완벽하게 작동합니다.

그 중 일부를 생략하면 Maven은 임의의 오류 메시지로 실패 할 수 있습니다.

내가했던 것처럼 6 시간 동안 누군가 가이 문제를 해결하지 못하게했기를 바랍니다.

다른 팁

Maven의 프록시 설정에 대한 자세한 내용은 미니 가이드.

기본적으로 글로벌 설정에서 프록시 섹션을 보장해야합니다 ([maven install]/conf/settings.xml) 또는 사용자 설정 (${user.home}/.m2/settings.xml)가 올바르게 구성됩니다. 공개 위치에 비밀번호를 일반 텍스트로 저장하지 않도록 사용자 설정에서이를 수행하는 것이 좋습니다.

Maven 2.1 도입 비밀번호 암호화, 그러나 나는 암호화가 프록시 설정과 저장소 암호에 적용되는지 확인하지 않았습니다 (그래도 왜 그렇지 않은지 알 수 없습니다).

정보의 경우 Settings.xml에 주석을 달린 프록시 구성이 있으며 수정 방법에 대한 지침이 있습니다.

미니 가이드에서 설정은 다음과 같이 보일 것입니다.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                  http://maven.apache.org/xsd/settings-1.0.0.xsd">
[...]
  <proxies>
    <proxy>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxy.somewhere.com</host>
      <port>8080</port>
      <username>proxyuser</username>
      <password>somepassword</password>
      <nonProxyHosts>www.google.com|*.somewhere.com</nonProxyHosts>
    </proxy>
  </proxies>
[...]
</settings>

양말 프록시를 사용하는 방법?

어딘가에 서버에 SSH 터널을 설정하십시오.

ssh -D $PORT $USER@$SERVER

Linux (Bash) :

export MAVEN_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=$PORT"

Windows :

set MAVEN_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=$PORT"

또한 일부 플러그인 (원격 자료가 마음에 듭니다)은 maven_opts를 통해 프록시 구성 만 허용하는 정말 오래된 라이브러리를 사용합니다.

-Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port> -Dhttps.proxyHost=<host> -Dhttps.proxyPort=<port>

당신은 이것에 대해 인증에 붙어있을 수 있습니다.

또한이 문제가 있었고 .m2 폴더에서 settings.xml 파일을 편집하여 해결했습니다. 내 settings.xml은 지금 이와 같습니다.

<settings>
  <proxies>
    <proxy>
      <id>genproxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxyHost</host>
      <port>3128</port>
      <username>username</username>
      <password>password</password>
    </proxy>
 </proxies>
</settings>

설정 Maven 프록시 :

당신의 프록시 세션을 편집하십시오 ~/.m2/settings.xml 파일. 파일을 찾을 수 없다면 파일을 작성하십시오.

<settings>
<proxies>
    <proxy>
        <id>httpproxy</id>
        <active>true</active>
        <protocol>http</protocol>
        <host>your-proxy-host</host>
        <port>your-proxy-port</port>
        <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>
<proxy>
        <id>httpsproxy</id>
        <active>true</active>
        <protocol>https</protocol>
        <host>your-proxy-host</host>
        <port>your-proxy-port</port>
        <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>

</proxies>
</settings>

또는

당신의 프록시 세션을 편집하십시오 {m2_home} /conf/settings.xml

도움이되기를 바랍니다 .. :)

내 회사의 대리인은 내 자신의 경험을 추가하기 위해 http://webproxy.intra.companyname.com:3128. Maven 이이 프록시를 통해 작동하려면 설정은 바로 그거죠 이와 같이

<settings>
  <proxies>
    <proxy>
      <id>default</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>webproxy.intra.companyname.com</host>
      <port>3128</port>
    </proxy>
  </proxies>
</settings>

다른 프록시-구성 파일과 달리 protocol 다음은 프록시 서버에 연결하는 방법에 대해 설명합니다. 어떤 종류의 프로토콜을 프록시 해야하는지 설명합니다. 그만큼 http 대상의 일부는 호스트 이름에서 분리되어야합니다. 그렇지 않으면 작동하지 않습니다.

감사합니다 @krosenvold.

설정 파일 변경이 작동하지 않으면 POM 파일이있는 명령 프롬프트 에서이 작업을 시도하십시오.

mvn install -Dhttp.proxyHost=abcproxy -Dhttp.proxyPort=8080 -Dhttps.proxyHost=abcproxy -Dhttps.proxyPort=8080

이것은 암호 변경 직후에 도움이되었습니다.

난 달린다 cntlm 로컬, 구성 NTLMv2 기업 프록시로 인증하고 사용하는 비밀번호 해시

export MAVEN_OPTS="-DproxyHost=127.0.0.1 -DproxyPort=3128"

그 프록시를 사용합니다 maven. 물론 사용하는 프록시는 지원해야합니다 cntlm/NTLMv2.

그리고이 주제에 추가하기 위해, 여기 아래에 내 경험이 있습니다 ... 정말 이상하고 시간이 많이 걸리므로 추가 할 가치가 있다고 생각했습니다.

Windows에 Portlet-Bridge를 구축하려는 비슷한 문제가 있었으며 다음과 같은 오류가 발생했습니다.

Downloading: http://repo1.maven.org/maven2/org/apache/portals/bridges-pom/1.0/bridges-pom-1.0.pom
[DEBUG] Reading resolution tracking file C:\Documents and Settings\myuser\.m2\repository\org\apache\portals\bridges-pom\1.0\bridges-pom-1.0.pom.lastUpdated
[DEBUG] Writing resolution tracking file C:\Documents and Settings\myuser\.m2\repository\org\apache\portals\bridges-pom\1.0\bridges-pom-1.0.pom.lastUpdated
[ERROR] The build could not read 1 project -> [Help 1]
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
FATAL] 비일리성 부모 POM : 아티팩트 org.apache.portals를 전송할 수 없음 : 브릿지 -POM : POM : 1.0 From/to the Central (http://repo1.maven.org/maven2) : 오류 전송 파일 : repo1. maven.org 및 'parent.relativepath'포인트가 잘못된 로컬 pom @ 라인 23, 열 11
...
[ERROR]   The project org.apache.portals.bridges:portals-bridges-common:2.0 (H:\path_to_project\portals-bridges-common-2.0\pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM: Could not transfer artifact org.apache.portals:bridges-pom:pom:1.0 from/to central (http://repo1.maven.org/maven2):
오류 전송 파일 : repo1.maven.org 및 'parent.relativepath'포인트가 잘못된 로컬 pom @ 줄 23, 열 11 : 알 수없는 호스트 repo1.maven.org-> [도움말 2
...
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException

나는 약간의 서핑을 따라 몇 가지를 시도했다.

  • Maven이 부모가 현지인이라고 생각하지 않도록 부모를 비워 두려고 부모를 설정하려고했습니다. 이것은 제안에 따른 것입니다 Hudson Build Fail : 해결할 수없는 부모 Pom 그리고 이 nabble 포럼에서. 이것은 효과가 없었습니다.

  • 또한 저장소가 내 settings.xml에 명시 적으로 나열되도록 보장했지만 이것은 효과가 없었습니다.

  • 그런 다음 MVN이 논의 된 바와 같이 MVN이 자신의 역사에 의존하기보다는 저장소를 조회해야했습니다. Sarthon 의이 블로그. 불행히도 이것은 문제가 아니었다.

  • 절망적으로, 나는 Maven_opts를 다시 방문하여 프록시 설정에 대해 파울을 당하지 않도록했습니다. 이들은 인용되지 않은 가치에도 불구하고 정확했습니다.

    set maven_opts = -dhttp.proxyhost = myproxy.mycompany.com -dhttp.proxyport = 8080 -xmx256m

  • 그래서 마지막으로 프록시 구성을 내 settings.xml로 옮겼으며 이것은 효과가있었습니다.

    <proxies>
      <proxy>
        <id>genproxy</id>
        <active>true</active>
        <protocol>http</protocol>
        <!--username>proxyuser</username-->
        <!--password>proxypass</password-->
        <host>myproxy.mycompany.com</host>
        <port>8080</port>
        <nonProxyHosts>*.mycompany.com|127.0.0.1</nonProxyHosts>
      </proxy>
    </proxies>

Settings.xml 구성이 작동하는 동안 왜 원래 Maven_opts가 작동하지 않았는지 (인용문?) 왜 정말로 잘 모르겠습니다. 수정을 뒤집고 각 단계를 다시 확인하고 싶지만 너무 많은 시간을 낭비했습니다. 언제와 언제 다시보고합니다.

나는 이것이 실제로 질문에 대한 답이 아니라는 것을 알고 있지만,이 게시물을 검색하는 사람에게는 가치가있을 것입니다. Maven Repository 프록시를 설치할 수도 있습니다. 연결점.

Maven은 로컬 Nexus 프록시에 연락하도록 구성되며 Nexus는 아티팩트를 검색 (및 캐시)합니다. 웹 인터페이스를 통해 구성 할 수 있으며 (HTTP) 프록시를 지원합니다.

인공물이 현지에서 사용 가능하고 빠르게 다운로드 할 수 있기 때문에 이는 특히 회사 환경에서 이점이 될 수 있으며, 더 이상 외부 Maven 저장소의 가용성에 의존하지 않습니다.

질문에 다시 연결하기 위해; Nexus에는 프록시 구성을위한 멋진 GUI가 있으며 모든 개발자가 아닌 한 곳에서만 수행해야합니다.

Maven이 프록시를 통해 작동하지만 일부 플러그인이 아닌 경우 호출중인 경우 설정해보십시오. JAVA_TOOL_OPTIONS 또한 -Dhttp*.proxy* 설정.

당신이 이미 있다면 JAVA_OPTS 그냥 해

export JAVA_TOOL_OPTIONS=$JAVA_OPTS

Maven의 프록시 설정을 처음 접하는 것이 처음으로 가서 홈 폴더 날씨를 확인합니다. .m2 폴더와 그 안에는 이름이 지정된 파일이 있어야합니다. settings.xml 그것을 만들지 않으면 이것을 붙여 넣고 변경하십시오. host 그리고 port, 필요한 경우 변경하십시오 nonProxyHosts

홈 폴더 -C : Users {username}

<settings>
<proxies>
    <proxy>
        <id>httpproxy</id>
        <active>true</active>
        <protocol>http</protocol>
        <host>your-proxy-host</host>
        <port>your-proxy-port</port>
        <nonProxyHosts>localhost</nonProxyHosts>
    </proxy>
<proxy>
        <id>httpsproxy</id>
        <active>true</active>
        <protocol>https</protocol>
        <host>your-proxy-host</host>
        <port>your-proxy-port</port>
        <nonProxyHosts>localhost</nonProxyHosts>
    </proxy>

</proxies>
</settings>

어떤 경우에도 성공하지 못한 경우 홈 폴더 의이 위치에서 변경을 수행합니다.

/conf/settings.xml

나는 Eclipse를 내 IDE로 사용하고 있습니다
이것이 도움이되기를 바랍니다 !!

위에서 언급 한 기술을 제외하고 약간의 노력으로 Jproxyloader 라이브러리를 사용하여 프록시를 통해 Maven을 실행할 수 있습니다 (페이지에 예제가 있습니다. http://jproxyloader.sourceforge.net/). 이를 통해 아티팩트 다운로드를위한 양말 프록시 만 설치할 수 있습니다.

Duanni (Setting -dsocksProxyHost)가 언급 한 솔루션에는 한 가지 문제가 있습니다. 로컬 데이터베이스에 대해 통합 테스트가 실행되는 경우 (또는 프록시를 통해 진행되지 않아야하는 URL에 연결하는 다른 테스트). 데이터베이스에 대한 연결도 프록시로 연결되므로 이러한 테스트는 작동이 중단됩니다. JPROXYLOADER의 도움으로 Nexus 호스트에만 프록시를 설정할 수 있습니다. 또한 원하는 경우 다른 프록시를 통해 데이터베이스에 연결을 전달할 수 있습니다.

때로는 다른 사람들을 추가해야합니다 <proxy></proxy> 태그, 프로토콜 태그에서 HTTPS를 지정하십시오. <protocol>https</protocol>

위의 게시물은 내 문제를 해결하는 데 도움이되었습니다. 위의 것 외에도 다음과 같은 변경을 수행해야했습니다.

  • 시스템 프록시 설정을 사용하려면 Maven의 JRE Net 설정 ( jre lib net.properties)을 수정했습니다.

    https.proxyHost=proxy DNS
    https.proxyPort=proxy port
    
  • settings.xml에 프록시 서버 설정이 포함되어 있습니다. NTLM 인증을 사용하기 위해 사용자 이름과 비밀번호 설정을 제공하지 않았습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top