사내에서 의존성을 사용하고 싶었으나 프록시의 벽에 막히고 "안되는구나..😭" 하고 살아왔었다.
이번에 개발을 시작하면서 사내 메이븐 settings.xml 파일이 있는 것을 알게 되었고 오늘 하루만에 세팅을 완료했다. 사내 인트라넷 + 프록시를 통해 인터넷이 연결되는 환경에서의 메이븐 설정방법을 기록하고자 한다.
준비물: 프록시 IP 주소, 사내 인증서
1. settings.xml 세팅
메이븐 세팅이 기록 된 파일이다.
일반적으로 C:\사용자\{UserName}\m.2\setting.xml 에 위치한다.
없다면 생성해주자
a) 프록시 세팅
<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
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<proxies>
<proxy>
<id>myproxy</id>
<active>true</active>
<protocol>http</protocol>
<host>{사내 Proxy IP}</host>
<port>{사내 Proxy Port}</port>
</proxy>
</proxies>
</settings>
proxy IP/PW가 있다면 아래 항목 추가
<proxies>
<proxy>
...
<username>proxyuser</username>
<password>somepassword</password>
</proxy>
</proxies>
2. pom.xml 오류 발생 시
Could not calculate build plan: Plugin org.apache.maven.plugins: maven-resources-plugin:2.6 or one of its dependencies could not be resolved: ...
Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-compiler-plugin:3.1: ...
나의 경우 위 2가지 오류가 발생했는데, 원인은 모두 maven 접속문제였다.
settings.xml에 아래 문장을 추가하여 repository를 등록해 주자
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo1.maven.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
반드시 https로 호출 해야 한다는 점이 중요하다.
http로 저장한다면 maven build/clean 시 다음 에러를 확인 하게 된다.
Error code 501, HTTPS Required -> [Help 1]
크롬으로 http://repo1.maven.org/maven2 로 접속 해 보면 아래와 같은 메시지가 응답되는데
501 HTTPS Required.
Use https://repo1.maven.org/maven2/
More information at https://links.sonatype.com/central/501-https-required
https://links.sonatype.com/central/501-https-required 에서 More information을 확인 해 보면 http는 2020년 1월 15일 부로 지원이 종료되었다고 한다.
부득이하게 https를 사용할 수 없는 경우 http://insecure.repo1.maven.org/maven2(권장되지 않음)로 교체해주면 된다.
2. 인증서 등록
만약 https 접속이 안되거나, Spring starter project 생성 시 아래 메시지가 표시된다면 인증서를 등록해야 한다.
SunCertPathBuilderExeption: unable to find valid certification path to requested target
사내 인증서를 사용할것이므로.. keytool 을 사용하여 java에 등록해 주자.
사내 인증서가 없다면 구글에 InstallCert 를 검색해서 생성한다.
cmd.exe를 실행시켜 아래 명령을 실행한다.
keytool -import -file {인증서 경로} -keystore "{자바 홈}\jre\lib\security\cacerts" -storepass "changeit"
> 이 인증서를 신뢰합니까? [아니오]:
라고 나올텐데 예 라고 입력하고 엔터를 치면 등록이 완료된다.
cacerts 비밀번호를 안바꿨다면 changeit일 것이다.
3. (Optional) 이클립스 Network 항목 변경
General > Network Connections > Manual 선택 후 Proxy 설정
'Backend' 카테고리의 다른 글
Springboot (2) 단위 테스트 (0) | 2020.04.18 |
---|---|
Springboot (1) 개발환경 설정 (0) | 2020.04.17 |
Spring Batch + MyBatis 연결방법 (0) | 2020.03.18 |
Spring Batch 메타 테이블 비 활성화 (0) | 2020.03.17 |
Spring Batch 시작하기 (0) | 2020.03.15 |