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

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
78 [Java 일반] 07-06 함수형 프로그래밍 졸리운_곰 2023.09.04 6
77 [Java 일반] [JAVA] JAVA의 람다식 사용법 및 다양한 작성 예제 file 졸리운_곰 2023.09.04 39
76 [Java 언어] [Java] 람다식(Lambda Expressions) 사용법 및 예제 졸리운_곰 2023.09.04 22
75 [Java][jupyter notebook][!java] 주피터 노트북에서 자바 실행 환경구축. java on jupyter notebook file 졸리운_곰 2023.08.24 24
74 [java maven] jar 파일 의존성 한번에 다운로드 maven 사용 졸리운_곰 2023.08.18 33
73 [Java] 효율적인 JUnit 사용 방법과 유용한 팁 file 졸리운_곰 2022.10.20 32
72 [Java] Java Console Input and Output Examples 졸리운_곰 2021.11.07 22
71 [Java] \ 문자 빠구기 : replaceAll 사용시 특수문자 졸리운_곰 2021.07.13 37
70 이클립스에서 java 버전 변경 file 졸리운_곰 2021.04.29 33
69 JAVA) 예외처리(throw , throws) file 졸리운_곰 2021.01.24 21
68 예외처리 (throwable, exception, error, throws) file 졸리운_곰 2021.01.21 39
67 [Java] 자바 extends, implements 차이 file 졸리운_곰 2020.12.10 48
66 Maven 배포시 Local Jar 파일과 함께 하기! file 졸리운_곰 2020.10.06 16
65 How to add a local lib directory to Maven 졸리운_곰 2020.10.06 17
64 [Maven] 외부 jar 의존성 추가, war build 시 외부 jar 포함시키기 졸리운_곰 2020.10.05 239
63 Spring Boot 프로젝트에 외부 라이브러리(jar) 추가하기 졸리운_곰 2020.10.05 695
62 [maven 설정] Jackson Databind » 2.6.7.1 졸리운_곰 2020.10.05 33
61 [maven 설정] MongoDB Java Driver » 3.12.6 졸리운_곰 2020.10.05 18
» Maven 에 직접 jar 라이브러리 추가하기!!! ( 외부 repository 사용이 안될때) + scope 정리 졸리운_곰 2020.10.05 20
59 추상(abstract) 클래스가 필요한 기본적인 이유 졸리운_곰 2019.10.30 68
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED