3가지 필수 필드
지역(local) 저장소 : 메이븐을 빌들할때 다운받는 라이브러리들의 플러그인을 관리하는 저장소
중앙저장소: 오픈소스 , 메이븐 플러그인 관리하는 저장소
원격 저장소 :중앙 저자소에 없는 라이브러리를 관리하기위해 따로 설치하여 관리
검색 절차:
지역 (로컬) 저장소에 라이브러리가 찾고 있으면 사용 없으면 중앙저장소로
중앙저장소에 라이브러리를 찾고 있으면 로컬저장소에 저장 없으면 원격 저장소로 만약 원격 저장소가 없으면 에러
원격저장소 검색, 라이브러리찾으면 로컬저장소에 저장, 없으면 에러
groupId: 프로젝트 조직 고유 도메인
artifactId: 프로젝트 명
version:프로젝트 버전
scope: 의존 라이브러리를 적용할수있는 시점을 제한
scope | Description |
---|---|
compile | 스코프를 설치하지 않을때 기본 |
provided | 컴파일시 직접 의존성 참조, 런타임시에 다른 환경 의존성 제공 |
runtime | 애플리케이션 실행될때만 사용 라이브러리 사용할때 |
test | JUNIT |
system | jar 파일 직접 제공 |
import | 의존관계 설정 프로젝트 import |
3개의 라이프 사이클: build, clean , site
페이즈 Phase | Description |
---|---|
리소스 준비 | 리소스를 준비되어 복사 |
컴파일 | 소스코드를 컴파일한다 |
테스트 | Junit 같은 프레임 워크로 단위테스트를 한다 |
패키지 | pom.xml 값 (jar, war ,ear) 따라 형식에 맞게 압축 |
인스톨 | 패키지를 로컬 저장소에 배포한다 |
배포 | 원격 메이븐 저장소에 압축한 파일을 배포한다 |
빌드 사이클은 여러 페이즈들로 구성되어있고
여러개의 골은 하나의 페이즈에서 수행한다.
각 페이즈 별로 플러그인이 작업 해당 작업들을 골이라고함
페이즈 말그대로 해당 단계들을 말하고 goal은 해당 작업들을 말함.
- JVM 에서 실행
- 저장소 관리 기능
- 중앙저장소 maven과 공유 가능
- 다양한 플러그인 제공
- Graddle Wrapper 를 선언된 버전을 호출하여 미리 다운받어서 사용 프로젝트에 종속되어 버젼에 맞게 빌드 가능
- Maven 처럼 tag 형식이 아님, Groovy 형식
plugin: task( 작업단위)의 집합
repository: 의존 관계 저장소
Implementation: 라이브러리의 의존성 추가
CompileOnly: 컴파일과정에만 필요한 라이브러리 의존성 추가
CompileClasspath: 컴파일하는 시점의 class path
RuntimeOnly: 코드가 실행되는 런타임에만 필요
RuntimeClasspath: 런타임에 필요되는 class path
java-library는 API로 받을수있지만 Java는 Implementation으로만 가능
다양한 라이브러리 종속을 하는 build script에서 사용하는 API 와 Implementation
참고자료: https://jongmin92.github.io/2019/05/09/Gradle/gradle-api-vs-implementation/