티스토리 뷰

728x90

회사에서 공통으로 사용 할 수 있는 메소드들을 모듈화하여 라이브러리로 제공을 해달라는 업무를 받았다. 단순히 jar파일을 제공해서 각자의 프로젝트에 포함하라고 할 수 있지만 이왕 하는 김에 maven repository를 만들어 자동으로 필요한 라이브러리들을 다운 받을 수 있도록 제공하고 싶었다. 

 

maven 저장소를 구축 할 때 Nexus라는 툴을 많이 쓰는 것 같은데..나는 이런 도움없이 만들고 싶었다.

아주 간단하게 maven 저장소를 구축해보려고 한다.

 

0.  사전준비

- repository를 구축 할 서버에 아래의 내용들을 설치해주자

1) java 8 이상

2) maven

3) git

4) nginx

 

1. 라이브러리 만들기

1) maven 프로젝트 만들기

- maven은 기본적으로 src/main/java 디렉토리의 소스코드를 jar파일에 포함시키기 때문에 src/main/java로 파일구조를 맞춰주어야한다.

- 나는 맨 처음에 기본 java 프로젝트로 구성해서 바로 src하위에 package들을 놓았는데, maven build는 잘 되어 jar파일은 만들어졌는데 그 jar파일을 까보니 아무것도 없었다..처음부터 IDE의 도움을 받아 maven project 로 프로젝트를 만들면 신경 쓸 필요 없다.

 

2) pom.xml에 배포 정보 추가하기

- groupId, artifactId, Version 정보를 적어준다.

- distributionManagement의 url에 repository의 위치를 적어준다.

- id는 아무거나 적어도 무방하다.

<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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.injeong.common</groupId>
    <artifactId>common-utils</artifactId>
    <version>0.0.1</version>

    <properties>
        <java.version>11</java.version>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    
    <distributionManagement>
        <repository>
            <id>injeong-repo</id> <!--아이디는 마음대로 적어주세요-->
            <url>file:///usr/local/maven-repo</url> <!--저장소를 저장 할 위치를 적어주세요-->
        </repository>
    </distributionManagement>
</project>

2. 프로젝트 옮기기

- repository를 구축 할 서버에 1에서 만든 프로젝트를 옮겨준다. FTP 같은 것을 사용하여 직접 옮겨주어도 되지만, 나는 git을 통해서 프로젝트를 다운받았다.

git clone [프로젝트의 git 주소]

 

3.  메이븐 배포하기

- 우선 프로젝트 상단으로 이동을 해준다음 아래의 명령어를 통해 배포를 해주면 된다.

(clean은 꼭 안해줘도 되는데..그래도)

mvn clean

mvn deploy

 

이렇게 배포가 완료 되면 pom.xml에 작성한 위치 하위의 grouId/artifactId 에는 maven-metadata.xml이

grouId/artifactId/version 하위에 jar파일이 생성 된 것을 확인 할 수 있다.

4.  nginx로 maven repository에 접근하기

vi /etc/nginx/conf.d/default.conf

 

- location의 root 부분을 아래와 같이 maven 저장 위치로 변경해준다.

- 나는 mave-repo 하위에 접근 할 수 있는지 확인을 위해서 autoindex를 잠시 on으로 놓은것이므로, 실제로 사용할 때는 해당 지시어를 삭제해주는게 좋다(보안 취약🤧)

 location / {
        root    /usr/local/maven-repo;
        autoindex on;
   }

- 아래처럼 서버에 접속하면 autoindex를 on으로 두어 디렉토리 구조를 확인 할 수 있다.

 

5.  다른 프로젝트에서 dependency 추가 하기

- 우선 central repository가 아닌 외부 repository를 사용하려면 repository를 명시해주어야한다. 아래와 같이 url에 repository url을 적어준다.

<repositories>
        <repository>
            <id>central</id>
            <url>https://repo.maven.apache.org/maven2</url>
        </repository>
        <repository>
            <id>injeong-repo</id>
            <url>http://192.168.0.113</url>
        </repository>
 </repositories>

 

그 다음, 일반적으로 dependency 추가 하듯이 메이븐 배포 시 사용한 group id와 artifiactId, version을 dependecy에 추가해주면 된다. 

<dependencies>
    <dependency>
        <groupId>com.icomsys.common</groupId>
        <artifactId>common-utils</artifactId>
        <version>0.0.1</version>
    </dependency>
 </dependencies>

ssl 인증서 적용 및 젠킨스로 자동화 하기 등 아직 해야할 일이 있지만, 메이븐 레파지토리를 내가 어떻게 만들어..에서 난 이제 메이븐 레파지토리도 구축 할 수 있다! 자신감 뿜뿜이 되었다. 😑 참 모든 일이 해보기 전엔 어렵지만, 막상 해보면 별거 아닌 것 같다!

 

다음주에는 젠킨스로 자동화를 시킬 수 있는지 해보려고 한다.

 

 

'백엔드' 카테고리의 다른 글

[JAVA] 비동기로 HTTP 요청하기  (0) 2022.11.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함