메이븐 vs 그래들
Maven
- Java 전용 프로젝트 관리 도구로, Lifecycle 관리 목적 빌드 도구이며, Apache Ant의 대안으로 만들어짐
- 아파치 라이센스로 배포되는 오픈 소스 소프트웨어
특징
- Lifecycle 관리 도구로, 정해진 Lifecycle에 의하여 작업을 수행하며, 전반적인 프로젝트 관리 기능을 포함하고 있다.
clean - validate - compile - test - package - verify - install - site - deploy의 라이프 사이클을 가진다.
- 필요한 라이브러리를 pom.xml에 정의한다. 이를 프로젝트 모델링이라고 한다.
pom은 Project Object Model의 약자로, 프로젝트 정보(프로젝트 이름, 라이센스, 빌드 설정(소스, 리소스, 라이프 사이클 별 실행한 plugin 등 빌드 관련 설정), 빌드 환경(사용자 환경 별로 달라질 수 있는 프로필 정보, pom 연관 정보(의존 프로젝트, 모듈, 상위 프로젝트 등)을 담고 있다.
Gradle
- Maven을 대체할 수 있는 프로젝트 구성 관리 및 범용 빌드 툴이며, Ant Builder와 Groovy script를 기반으로 구축되어 기존 Ant의 역할과 배포 스크립의 기능을 모두 사용가능하며 스프링부트와 안드로이드에서 사용된다.
- 빌드 속도가 Maven에 비해 10~100배 가량 빠르며, Java, C/C++, Python 등을 지원한다.
Groovy는 JVM에서 실행되는 스크립트 언어이다. JVM에서 동작하지만 소스코드를 컴파일할 필요 없다. Java와 호환되며, Java class file들을 Groovy class로 사용 가능하다.
Java 문법과 유사하여 빌드 처리를 관리할 수 있다.
특징
- 가독성이 좋다 : 코딩에 의한 간결한 정의가 가능하므로 가독성이 좋다.
- 재사용에 용이 : 설정 주입 방식(Configuration Injection)을 사용하므로 재사용에 용이하다.
- 구조적인 장점 : Build Script를 Groovy 기반의 DSL(Domail Specific Language)를 사용하여 코드로서 설정 정보를 구성하므로 구조적인 장점이 있다.
- 편리함 : Gradle 설치 없이 Gradle wrapper를 이용하여 빌드를 지원한다.
- 멀티 프로젝트 : Gradle은 멀티 프로젝트 빌드를 지원하기 위해 설계된 빌드 관리 도구이다.
- 지원: Maven을 완전 지원한다.
Maven vs Gradle
- 스크립트 길이와 가독성 면에서 gradle이 우세하다.
- 빌드와 테스트 실행 결과 Gradle이 더 빠르다
gradle은 캐시를 사용하므로 테스트 반복 시 실행 결과 시간의 차이가 더 커진다. - 의존성이 늘어날 수록 스크립트 품질의 차이가 커진다.
Maven은 멀티 프로젝트에서 특정 설정을 다른 모듈에서 사용하려면 상속 받아야하지만, gradle은 설정 주입 방식을 사용하므로 멀티 프로젝트에 적합하다.
데이터베이스 방언
JPA는 특정 데이터베이스에 종속적이지 않은 기술
다른 데이터베이스로 손쉽게 교체할 수 있다.
JPA 구동방식
프로젝트 시 에러
<h2 설치 에러>
Could not find or load main class org.h2.tools.Console
해결
1. h2/bin 폴더 진입
2. 새로만들기 -> 텍스트파일 -> 이름바꾸기 : 파일명 및 확장자 start.bat으로 변경
3. start.bat 편집 -> 메모장으로 연결 -> javaw -jar h2-1.4.200.jar 작성
4. 바탕화면 바로가기 만들기
<실행시 에러>
javax.xml.bind.JAXBException
JAVA11 에서의 에러 발생
해결
pom.xml에 다음을 추가
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
https://www.inflearn.com/questions/13985/java11-javax-xml-bind-jaxbexception-%EC%97%90%EB%9F%AC
참고