티스토리 뷰
회사에서 공통으로 사용 할 수 있는 메소드들을 모듈화하여 라이브러리로 제공을 해달라는 업무를 받았다. 단순히 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
- 코딩테스트
- 리액트
- 전자정부프레임워크
- 톰캣
- centos
- 현대오토에버
- Docker
- java
- softeer
- 도커
- 자바스크립트
- Kubernetes
- Linux
- 오토에버코테
- 코테
- 아파치카프카
- java 코테
- 현대코테
- 쿠버네티스
- react
- Spring
- 자바코테
- 자바
- tomcat
- mysql
- springboot
- javascript
- 스프링
- softeer java
- 현대
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |