반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
Tags
- 문맥교환
- kafka 설치
- 실행엔진
- 하둡에코시스템
- 스파크
- 하둡2.0
- lazy evaluation
- 카프카
- 빌드도구
- Spark 최적화
- 데이터베이스복사
- 하둡
- ORACLE MSSQL차이
- 데이터파이프라인
- ORACLE문법
- Catalyst Optimizer
- 서버간 복사
- AWS Crawler
- 데이터엔지니어링
- 런타임데이터영역
- freenom
- Spark
- 프로그래머스힙
- 하둡1.0
- 데이터 수집
- 프로그래머스 큰 수 만들기
- 프로그래머스
- 지연연산
- EMR 구조
- Databricks
Archives
- Today
- Total
띵유로그
[빌드] Maven 관련 용어 정리(archetype, GroupId, ArtifactId,...) 본문
반응형
이번 포스팅은 Maven 과 관련된 용어와 지식을 정리하는 글입니다.
우선 Maven 은 빌드도구입니다.
프로젝트를 진행하다보면 여러 라이브러리를 참조해야할 때가 많은데요,
이때마다 라이브러리를 다운받는것은 매우 힘듭니다. 그래서 maven은 라이브러리를 네트워크(maven 저장소)에서 다운받아와 관리해줍니다.
- modelVersion
maven의 버전 - description
프로젝트의 간략한 설명 - properties
pom.xml 파일내에서 여러번 사용되는 중복상수. ${태그명} 으로 사용 - Archetype
메이븐 프로젝트 toolkit입니다. 메이븐 프로젝트에서 사용하는 모델이나 패턴을 템플릿화 해서 빠르게 구현할 수 있도록 해줍니다. 그냥 템플릿이라고 보면됩니다.
intellij 에서 maven 기반 프로젝트를 생성할 때에 add archetype 로 추가할 수 있습니다.
이때 템플릿의 groupId, ArtfactId, Version 등을 명시해주어야합니다.
아래 페이지를 확인하면 maven 저장소에 배포되어있는 여러가지 템플릿이 있으니 참고용으로 활용할 수 있습니다.
https://mvnrepository.com/search?q=archetype - GroupId
프로젝트 식별자입니다. GroupID는 프로젝트에서 패키지명이 됩니다.
java의 패키지 이름규칙을 따라야 하며 도메인 이름의 반대순서대로 적어줘야합니다.
ex) org.apache.maven, org.apache.common, net.alchim31.maven
subgroup 을 만들 수도 있습니다. 예를들어 다중모듈 프로젝트라면 부모 groupId에 추가 할 수 있습니다.
ex) org.apache.maven , org.apache.maven.plugins, org.apache.maven.reporting - ArtifactId
jar파일 이름입니다. 작게보면 프로젝트 기능이라고 볼 수도 있습니다. 개발 프로젝트에 할당되는 ID입니다. - version
배포 버전입니다. - Maven Goal
프로그램을 빌드하기 위한 각 단계별 역할
- compile : 프로그램을 컴파일합니다.
- test-compile : 테스트 프로그램을 컴파일 합니다. (TEST폴더)
- test : 테스트를 실행합니다.
- package : 패키지를 생성합니다. 즉, jar 파일을 만듭니다.
- install : 패키징한 파일을 로컬 저장소에 배포합니다. (USER_HOME/.m2/)
- site : 메이번 설정정보 파일을 활용하여 프로젝트에 대한 문서 사이트를 생성합니다.
- deploy : 패키징한 파일을 원격저장소에 배포합니다. (nexus or maven central 저장소)
- clean : 컴파일에서 생성된 각종 파일들을 모두 삭제합니다. - POM.xml
Project Object Model 의 약자입니다.
프로젝트 관리, 빌드에 대한 환경설정, 의존성 관리등에 대한 정보를 담고있습니다.
최소한의 구성요소는 다음과 같습니다.
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>app</artifactId>
<version>1</version>
</project>
스프링 프레임워크를 사용하고싶다면 다음과 같이 dependency를 추가해주면 됩니다.
maven은 추가한 라이브러리와 연관된 다른 라이브러리들을 자동으로 포함시켜줍니다.
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.0.RELEASE</version>
</dependency>
</dependencies>
이렇게 추가한 라이브러리는 C:\~~\.m2\repository 경로에서 볼 수 있습니다.
즉, POM.xml에 dependency를 추가해놓으면 maven update시 라이브러리가 내 로컬로 다운받아지고,
여러 프로젝트에서 라이브러리를 참조할 수 있습니다.
- 다중모듈
dependency를 사용해서 여러 프로젝트를 관리하다보면, 프로젝트마다 공통으로 필요한 모듈들이 있을 수 있습니다.
maven은 공통으로 사용하는 모듈, 개별적으로 사용하는 모듈을 나누어서 관리하고 상속관계를 만들 수 있습니다.
자세히 정리되어있는 글이 있어 남깁니다.
https://windwolf.tistory.com/18
maven은 xml기반이여서 작성이 힘들고 멀티프로젝트관리가 조금 복잡합니다.
maven뒤에 나온 gradle은 이런 단점을 극복하고 있습니다.
다음 포스팅에서는 gradle에 대해서 공부해보겠습니다.
반응형
'기타' 카테고리의 다른 글
[Intellij] certificate setting 경고 제거 (0) | 2022.04.08 |
---|---|
[빌드]Gradle 정리 (0) | 2022.03.11 |
윈도우 서버내 파일을 S3에 백업 (0) | 2022.02.16 |
한글 인코딩 정리 (문자체계와 인코딩) (0) | 2021.11.12 |
[MFC] MFC 기초 - 새로 알게된것 정리 NOTE (0) | 2021.10.23 |
Comments