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
- 13460 구슬탈출 2
- 싱글톤 컨테이너
- 백준
- 기능개발 python
- 자바 ORM 표준 JPA 프로그래밍 7장
- 고급매핑
- KotlinInAction
- Kotlin in action 6장
- Python
- 스프링 핵심 원리
- Kotlin in action 10장
- kotlin in action 정리
- 20055
- spring
- Kotlin in action 5장
- 백준 20055 컨베이어 벨트 위의 로봇
- 스프링 핵심 원리 이해
- 코틀린인액션
- 컨베이어 벨트 위의 로봇 Python
- 객체 지향 설계와 스프링
- 백준 13460 Python
- Kotlin in action 3장
- Kotlin
- 20055 컨베이어 벨트 위의 로봇
- Kotlin In Action
- 스프링 컨테이너와 스프링 빈
- 코틸린인액션
- 7장 고급매핑
- 스프링 핵심 원리 - 기본편
- 코틀린
Archives
- Today
- Total
기록하는 습관
[Spring] Gradle (2) - ant, maven, gradle 본문
ant
- 특징
- XML 기반 빌드 스크립트 개발
- 규칙이 없음
- 절차적이다.
- 생명주기를 갖지 않아 각각의 Target에 대한 의존관계와 작업을 정의해 주어야 함.
- 단점
- 스크립트의 재사용이 어렵다.
maven
- 특징
- 모든 Dependency를 리스트의 형태로 Maven에게 알려서 종속성을 관리한다.
- XML, Repository를 가져올 수 있다. → Jar, Class Path를 선언만 하면 직접 다운로드 할 필요가 없이 Repository에서 자동으로 필요한 라이브러리 파일을 불러와 준다.
- 단점
- 라이브러리가 서로 종속할 경우 XML이 복잡해진다.
- 라이프 사이클(빌드 순서)
- Clean : 이전 빌드에서 생성된 파일들을 삭제하는 단계
- Validate : 프로젝트가 올바른지 확인학고 필요한 모든 정보를 사용할 수 있는 지 확인하는 단계
- Compile : 프로젝트의 소스코드를 컴파일하는 단계
- Test : 유닛(단위) 테스트를 수행하는 단계(테스트 실패시 빌드 실패로 처리, 스킵 가능)
- Package : 실제 컴파일된 소스 코드와 리소스들을 jar등의 배포를 위한 패키지로 만드는 단계
- Verify : 통합테스트 결과에 대한 검사를 실행하여 품질 기준을 충족하는지 확인하는 단계
- Install : 패키지를 로컬 저장소에 설치하는 단계
- Site : 프로젝트 문서를 생성하는 단계
- Deploy : 만들어진 Package를 원격 저장소에 release하는 단계
- 메이븐에서는 하나의 플러그인에서 여러작업을 수행할 수 있도록 지원하며, 플러그인에서 실행할 수 있는 각각의 기능을 goal이라고 한다. 플러그인의 goal을 실행하는 방법은 다음과 같다.
- -mvn groupId:artifactId:version:goal(아래와 같이 생략가능)
- -mvn plugin:goal
- 참고: 메이븐 버전 충돌 해결
- project 내 dependency를 tree format으로 보여준다.
- 명령어 사용: mvn dependency:tree
gradle
- 특징
- JVM 기반의 오픈소스 빌드 자동화 툴.
- Ant, Maven의 단점을 보완
- 장점
- 프로젝트 시작시 설정에 드는 시간을 절약할 수 있다.
- maven 보다 좋은 점
-
- Build라는 동적인 요소를 XML로 정의하기에는 어려운 부분이 많다.
- 설정 내용이 길어지고 가독성 떨어짐
- 의존관계가 복잡한 프로젝트 설정하기에는 부적절
- 상속구조를 이용한 멀티 모듈 구현
- 특정 설정을 소수의 모듈에서 공유하기 위해서는 부모 프로젝트를 생성하여 상속하게 해야함 (상속의 단점 생김)
- Gradle은 그루비를 사용하기 때문에, 동적인 빌드는 Groovy 스크립트로 플러그인을 호출하거나 직접 코드를 짜면 된다.
- Configuration Injection 방식을 사용해서 공통 모듈을 상속해서 사용하는 단점을 커버했다.
- 설정 주입시 프로젝트의 조건을 체크할 수 있어서 프로젝트별로 주입되는 설정을 다르게 할 수 있다.
- maven보다 최대 100배 빠르다.
- Build라는 동적인 요소를 XML로 정의하기에는 어려운 부분이 많다.
-
- Java plugin (apply plugin: 'java')
- 소스세트
- 속성
- 태스크
- 규칙
- 빌드 순서
- 초기화: 빌드 환경설정, 참여할 프로젝트 결정
- 구성: 빌드 Task 그래프를 구성, 태스크 순서 결정
- 실행: 구성 단계가 끝날 때 선택한 태스크 실행
- Task
- build가 수행하는 일부 원자적 작업
- gradle은 명령어에 의해 task를 수행하는 프로그램이다.
- task는 사용자가 정의할 수 있음.
- build.gradle에 task를 기술해두면 그것을 gradle 명령으로 호출시켜 실행 가능.
- Custom Task Type
- 이미 존재하는 task로 처리할 수 없는 빌드 작업이 필요한 경우 custom task 제작 가능.
- buildSrc, Package Plugin에 배치하는 것이 좋음.
- build.gradle 파일 구조와 분석
- repositories
- gradle이 필요한 라이브러리를 자동으로 다운로드 하기 위해 사용하는 저장소
- jcenter(), mavenCentral()은 gradle의 메소드이다.
- dependencies
- 저장소에서 필요한 라이브러리를 사용하기 위한 문장
- repositories
- out 폴더: 인텔리제이 빌드시에 컴파일한 class를 저장하는 폴더
- build 폴더: gradle 빌드시에 컴파일한 class를 저장하는 폴더
- 기본 task: https://wani-coding.tistory.com/131
'개발 > Spring' 카테고리의 다른 글
[Spring] Gradle (4) - jar vs. war (0) | 2022.07.12 |
---|---|
[Spring] Gradle (3) - build란? (0) | 2022.07.12 |
[Spring] Gradle (1) - maven -> gradle 변경 (0) | 2022.07.12 |
Spring - JPA (3) update 쿼리와 영속성 컨텍스트 (0) | 2022.07.12 |
Spring - JPA (2) 다중성 (0) | 2022.07.12 |
Comments