Maven 에 직접 jar 라이브러리 추가하기!!! ( 외부 repository 사용이 안될때) + scope 정리

 

프록시 등등 여러가지 이유로

외부 레파지토리에서 필요한 디펜던시를 못가지고 오는 경우가 있다.

JDBC 관련된 드라이버들은 등록도 안되있고...

 

그런 경우,

직접 jar 파일 다운받아서 추가해야되는데..

이게 이상하게 인터넷에 하라는대로 해도 안되는 케이스가 많아서

직접 다 해보고 여기에 정리해본다.

 

알아서 필요한 방법을 잘 쓰길.

 

 

 

1. maven 이 정식버전이 설치되어 있는 케이스

가장 쉬운 케이스인데, 사용하고자 하는 라이브러리의 디펜던시를 pom.xml 파일에 추가한다.

<dependency> <groupId>group</groupId> <artifactId>artifact</artifactId> <version>2.1</version> </dependency>

 

필요한 jar 파일 다운받아서 위치를 기억한 뒤,

 

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>

이러면, .m2  같은 로컬 레파지토리에 해당 디펜던시 폴더와 파일이 추가되어 maven dependency 에도 추가된다.

언제나 update maven project 를 해주길.

 

 

2. maven 설치 안되있고, eclipse 플러그인으로 사용시

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

이때도 위와 동일한 방법으로 pom.xml 에 추가한 뒤, maven 실행이 안되기때문에 eclipse  메뉴에서

 

file/import/maven/install or deploy an artifact to a maven repository

 

위 경로로 실행한다.

그리고 나서 해당 jar 파일 선택하고, pom 은 자동생성하게 놔두고,

밑에 group,artifact 들을 해당사항에 맞게 적어주고 finish 하면

1번 방법과 동일하게 local 레파지토리에 해당 라이브러리 디펜던시가 추가된다. 그러니 pom.xml 의 에러 ( missing ~ ) 가 사라지고 라이브러리를 사용할 수 있게 된다.

 

 

3. 위 2가지 방법이 아닌 경우에는, 강제로 프로젝트 안에 lib 폴더를 추가하거나 해서 사용하는 방법인데, 이론적으로는 되어야 하는데 필자의 경우 어쩔떈 되고, 어쩔때는 안되고,

어떤 피씨에서는 되고 또 어디선 안되는 현상이 자꾸 발생하다보니

짜증나서 안하게 되었다.....

{basedir}/lib 을 in-project 레파지토리로 추가해서 하거나, system scope 에 path 넣어서 쓰는건데,   되다 안되다 하거나... 실제로 build 할때는 포함안되는 현상이 있어서 이런 방법들은 안쓰기로 했다.

( 내가 잘 못해서 그런 것일 수도 있으니 잘되면 사용하셔도 됩니다~ )

 

* maven 디펜던시 추가시 scope 라는걸 정하는데

이거에 따라서 디펜던시가 다양한 방식으로 추가 된다.

위에 말한 system 의 경우 시스템패쓰를 따라가서 해당 라이브러리를 추가하지만, 막상 빌드할떄는 포함이 안되버린다(시스템에서 제공한다고 생각하는 듯)

기왕 말 나온김에 정리

 

* compile : 기본영역으로 아무것도 지정되지 않은 경우 사용됨. compile 의존관계에 있는 것은 프로젝트의 모든 클래스에서 사용가능함. 또한, 이와 같은 의존관계는 의존관계에 있는 프로젝트에 포함됨.
* provided : compile 과 매우 유사히지만, 실행시 의존관계를 제공하는 JDK나 컨테이너에 대해서 적용됨. 예를 들어, JEE에 대한 웹 어플리케이션을 만드는 경우, 웹 컨테이너가 서블릿 API와 Java EE API관련 클래스들을 제공하기 때문에 provided 영역으로 의존관계가 세팅되어야 함. 이 영역은 컴파일과 테스트의 클래스패스 용으로 사용되며, 자동영역임.
* runtime : 의존관계가 컴파일시 필요하지 않지만, 실행시 필요함을 의미함. 실행시와 테스트 클래스패스에 속하지만, 컴파일 클래스패스에는 속하지 않음.
* test : 일반적인 어플리케이션 사용에 대해서는 의존관계가 필요없고, 테스트 컴파일과 실행 시점에만 사용됨.
* system : 명시적으로 해당 JAR를 포함하는 것이 제공되어야 한다는 것을 제외하고 provided와 유사함. artifact는 항상 사용가능하며 레파지토리에서 검색하지 않음.
* import (Maven 2.0.9 이후에서만 적용) : 이 영역은 <dependencyManagement>에서 pom의 의존관계에 대해서 사용됨. 지정된 POM이 해당 POM의 <dependencyManagement> 영역에 있는 의존관계로 대체됨을 의미함. 이것들이 대체되기 때문에 import 영역의 의존관계들은 실질적으로 의존에 대한 제약에 대해 관여하지 않음.

 

출처 : http://homo-ware.tistory.com/43

[출처] https://m.blog.naver.com/kimyoon21/220260631016

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
61 [maven 설정] MongoDB Java Driver » 3.12.6 졸리운_곰 2020.10.05 65
» Maven 에 직접 jar 라이브러리 추가하기!!! ( 외부 repository 사용이 안될때) + scope 정리 졸리운_곰 2020.10.05 58
59 추상(abstract) 클래스가 필요한 기본적인 이유 졸리운_곰 2019.10.30 136
58 Java and JMX - Building Manageable Systems secret 졸리운_곰 2019.05.26 0
57 [GC] 강제로 GC시키기Java 메모리 full 발생시 강제로 GC 시키기 졸리운_곰 2019.01.22 282
56 Java Map 반복(Iteration)시키는 3가지 방법 졸리운_곰 2019.01.01 150
55 UML: 클래스 다이어그램과 소스코드 매핑 file 졸리운_곰 2018.04.30 227
54 lombok에 대해서 알아보자 file 졸리운_곰 2018.04.24 120
53 lombok을 잘 써보자! (2) 졸리운_곰 2018.04.24 215
52 lombok을 잘 써보자! (1) 졸리운_곰 2018.04.24 136
51 [Java] Quartz (쿼츠)를 사용하여 자바 스케줄링(scheduling) 하기 졸리운_곰 2018.02.12 294
50 [subclipse] svn에서 무시할 파일 설정하기 svn:ignore property 설정 file 졸리운_곰 2017.09.24 178
49 자바에서 C# 호출하기 file 졸리운_곰 2017.04.26 290
48 Comparison between C# and Java - DiVA.pdf file 졸리운_곰 2017.04.25 728
47 Java Annotation: 인터페이스 강요로부터 자유를… file 졸리운_곰 2017.03.20 148
46 Java Naming conventions 자바 명명 규칙 졸리운_곰 2017.03.04 138
45 Timer 클래스를 이용한 작업 스케쥴링 졸리운_곰 2016.11.14 158
44 자바 8 살펴보기 file 졸리운_곰 2016.05.23 337
43 Java 8 개선 사항 관련 글 모음 졸리운_곰 2016.05.23 345
42 Java - Serialization file 졸리운_곰 2015.10.14 237
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED