[maven] jar 를 dependency 로 추가하는 법, Local Repository!

식빵·2023년 11월 14일
0

CI CD

목록 보기
8/9
post-thumbnail
post-custom-banner

pom.xml 내용 추가

pom.xml 에는 아래처럼 repository 정보와 넣고자 하는
내 jar 를 위한 dependency 입력합니다.

<repositories>
  <repository>
    <id>my-project-local-repo</id>
    <name>custom jars repo</name>
    <url>file://${basedir}/lib</url>
    <!-- basedir 는 현재 maven 프로젝트의 루트 경로입니다 -->
  </repository>
</repositories>

<dependencies>
  <dependency>
    <groupId>me.dailycode</groupId>
    <artifactId>sample-lib</artifactId>
    <version>1.0.0</version>
  </dependency>
</dependencies>
  • 주의 사항! groupId 에는 절대로 - 를 사용하여 단어를 나누면 안됩니다!
    - 를 쓰면 뭔가 잘 안될 겁니다 😂




디렉토리 구조

<repository> 에 작성한 url 인 file://${basedir}/lib 경로에
이제 jar 를 넣어주면 됩니다. 그런데 그냥 jar 만 툭 넣는다고 되는게 아닙니다!
maven 이 라이브러리를 찾을 수 있도록 저희가 디렉토리 구조를 잡아줘야 합니다!

아래 dependency 와 그림을 비교해가면서 어떻게 디렉토리를 생성하고,
jar 파일을 어떤 이름으로 넣어야 되는지 스스로 짐작하시기 바랍니다.
어렵지 않습니다!

<dependencies>
  <dependency>
    <groupId>me.dailycode</groupId> <!-- me 폴더, dailycode 폴더 생성 -->
    <artifactId>sample-lib</artifactId> <!-- sample-lib 폴더 생성 -->
    <version>1.0.0</version> <!-- 1.0.0 폴더 생성 -->
  </dependency>
</dependencies>

위 그림에서 *.jar 뿐만 아니라 *.pom 이라는 파일이 있는데,
아래처럼 작성해주면 됩니다.

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.oㅋrg/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>me.dailycode</groupId>
  <artifactId>sample-lib</artifactId>
  <version>1.0.0</version>
  <name>sample-lib</name>  
  <!-- 그외 부수적인 내용들... 필요하면 추가 -->
</project>

주의 : 혹여 maven 으로 package 한 jar 면, 해당 jar 를 패키징할 때 사용한
pom.xml 의 내용을 그대로 복붙하시면 됩니다.




Intellij 에서 확인하는 법

intellij 에서는 Project 탭 에서 External Libraries 를 확인하면 됩니다.
jar 내부의 내용물도 펼쳐서 쉽게 볼 수 있어서 좋습니다.



부가 설명: System Dependencies 사용? No!

사실 자신이 갖고 있는 jar 를 추가하기 쉬운 방법으로는 System Dependency 를
쓸 수도 있습니다만, Maven 공식 문서를 보면 더 이상 쓰지 말라고 충고를 해줍니다.

그리고 Deprecated 되도 난 사용할 거야! 라고 생각하는 분들을 위해 한말씀 올리자면
System Scope 을 사용해서 mvn package 를 하면 해당 jar 의 내용이 빠집니다.
그래서 spring boot jar 패키징은 특별한 세팅을 더 해줘야 하고
war 패키징의 경우에는 maven-war-pluginwebResource 태그를
주렁주렁 자식 태그로 더 작성해야합니다.

이럴 바에는 그냥 local repository 를 설정해서 씁시다 😊



참고링크:

profile
백엔드를 계속 배우고 있는 개발자입니다 😊
post-custom-banner

0개의 댓글