메이븐은 본래 빌드도구와 동시에 라이브러리 의존성을 관리해주는 편리한 기능을 가지고있다.

 개발할때 사용할 외부 라이브러리들을 개발자가 일일이 가져올 필요없이 pom.xml에 등록만 해주면 메이븐이 관련 라이브러리까지 가져와준다. 

 이때 메이븐 repository를 이용하는데 만약 이곳에 없는 외부 라이브러리 혹은 내가 만든 라이브러리를 사용하려면 (메이븐 빌드이용) 어떻게 해야 할까? 

 

1. <scope> <systemPath>를 이용하는 방법

<dependency>
    <groupId>custom</groupId>
    <artifactId>sleepyeyes-custom</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/sleepyeyes-custom.jar</systemPath>
</dependency>

간단하다 2개의 노드 추가로 끝이다.

 

groupId, artifactId, version은 임의로 적어도 무방하며

${project.basedir} 는 프로젝트의 ROOT경로이다.

 

2. 로컬 repository 를 만들어 사용하는 방법

 이방법은 2가지를 기억하면된다.

1. pom.xml에 repository경로 잡아주기

2. 프로젝트내 로컬repsitory 경로 규칙 잘 따라주기.

 

<repository>
    <id>local-repository</id> 
    <name>local repository</name> 
    <url>file://${project.basedir}/repo</url> 
</repository>

pom.xml에 <repositories>태그안에 로컬 경로를 잡아주고

<dependency>
    <groupId>custom</groupId>
    <artifactId>sleepyeyes-custom</artifactId>
    <version>1.0</version>
</dependency>

dependency는 평소와 똑같이 작성하면 된다.

 

단. 아래와 같이 경로를 맞추어 주어야 한다.

groupId/artifactId/version/jar이름

 

디렉토리 구성

 

 

첫번째 방법은 maven빌드시 해당 jar파일이 누락된다고 하니 이클립스 테스트용 정도로만 사용하고

실제 배포시에는 두번째 방법을 사용해야 할 듯 하다

 

참고

https://denodo1.tistory.com/282

http://cooldevlife.blogspot.com/2014/11/maven-build-custom-library.html

새로운 프로젝트 수정건을 받고 프로젝트에 맞게 톰캣7 과 JDK1.7을 설정해 주고 MAVEN인스톨을 했더니 제목과 같은 에러가 났다.


........................ Received fatal alert: protocol_version -> [Help 1] 


프로토콜버전이 맞지 않은거 같은데 나의 얇디 얆은 지식으로 해결할 수가 없어 바로 구글링을 하는 도중


MAVEN Repositoey가 https [TLS v1.2] 프로토콜로 연결되어야 하는데 


JDK 1.7 버전은 TLS v1.0 ~ v1.1이 기본값이라 프로토콜 버전이 달라서 에러가 났다는걸 알았다.


알아본 해결 방안으로는

1. jdk1.8 이상 버전을 사용하기

2. TLS v1.2로 바꾸기

2-1 System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2"); 메서드를 사용하여 https.protocols 속성을 지정해주는 방법

2-2 JVM옵션에 -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 속성을 주는 방법


원인과 방법을 알았으나 애처롭게도 그 방법들을 적용하는 구체적인 방법은 없었으며 삽질을 계속 반복하다 쉬운 방법 하나를 발견했다.

나는 어차피 윈도우와 이클립스에서만 프로젝트 작업을 하므로 이클립스 JVM옵션을 설정해주면 되는 것이다.


eclipse가 깔려있는 디렉토리로 가면 (보통 eclipse 이름 그대로) eclipse.ini 라는 설정 파일이 있다.

여기에 2-2 방법에 나온 -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 을 추가해주면 된다.




참고

http://sunghs.tistory.com/58

https://stackoverflow.com/questions/50946420/could-not-transfer-artifact-https-repo-maven-apache-org-maven2-received-fat

http://freestrokes.tistory.com/68


+ Recent posts