누구를 위한 코드인가?

코드란 무엇일까. 사전에서는 소스 코드를 아래와 같이 정의하고 있다.

소스 코드

소스 코드(source code) 또는 원시 코드란 컴퓨터 프로그램을 (사람이 읽을 수 있는) 프로그래밍 언어로 기술한 글을 말한다. 한 개, 또는 여러 개의 텍스트 파일로 구성되어 있다. 현대 소프트웨어 개발에서 기계어는 극히 일부 영역에서만 쓰이며, 대부분 고급 언어로 된 소스 코드를 컴파일하여 개발한다. 소프트웨어와 이에 동반하는 소스 코드는 일반적으로 크게 자유 소프트웨어와 사유 소프트웨어 가운데 하나의 라이선스를 지닌다.

출처 - 위키백과

Maven 빌드 할 때 PKIX path building failed 해결 방법

필자가 이클립스 Luna에서 Neon으로 넘어오면서 갑자기 빌드가 안된다거나(https://blog.silentsoft.org/archives/19), 이번 포스팅의 주제인 PKIX 에러가 난다거나 하는 등의 난감한 상황들을 겪었다. 그럴 때마다, 또 앞으로 벌어지는 난감한 상황들에 대해 포스팅을 쓸 테지만, 누군가에게 꼭 도움이 되었으면 좋겠다.

Maven 빌드 할 때 아래와 같이 PKIX 에러가 나는 경우가 있다.

from/to central (https://repo.maven.apache.org/maven2): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

사용하는 디펜던시가 https 레파지토리에 있다거나, 빌드 할 때 사용되는 Maven 플러그인을 다운로드할 때 https로 요청하는 경우, 정상적으로 연결이 되지 않으면 발생하는 에러이다.

구글링해보면 돌아다니는 InstallCert.java를 다운로드해서 컴파일하고 실행하는 등의 인증서 추가를 통한 해결 방법이 나오는데, SSL 통신이 아닌 Maven 빌드 할 때 발생하는 PKIX 에러는 아래와 같은 방법으로 근본적인 문제를 해결할 수 있다.

해결 방법은 매우 간단한데, pom.xml에서 https 프로토콜을 http로 바꿔주기만 하면 해결된다.

이클립스에서 pom.xml 파일을 열고, Effective POM 탭을 열어보면 아래와 같은 설정 정보가 보인다.

...
  <repositories>
    <repository>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>central</id>
      <name>Central Repository</name>
      <url>https://repo.maven.apache.org/maven2</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>central</id>
      <name>Central Repository</name>
      <url>https://repo.maven.apache.org/maven2</url>
    </pluginRepository>
  </pluginRepositories>
...

이것을 그대로 복사하여 pom.xml 탭에서 https가 아닌 http로 재정의해주면 된다.

<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

...
 
  <repositories>
    <repository>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>central</id>
      <name>Central Repository</name>
      <url>http://repo.maven.apache.org/maven2</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>central</id>
      <name>Central Repository</name>
      <url>http://repo.maven.apache.org/maven2</url>
    </pluginRepository>
  </pluginRepositories> 

  <properties>
    ...
  </properties>

...

Pagination


© 2017. All rights reserved.

Powered by Hydejack v7.5.1