Maven 프로젝트 식별자
하나의 프로젝트에서 여러 프로젝트를 관리할 수 있다.
lifecycle
validate, compile, test, package, verify, install, deploy
How to use
mvn < lifecycle >
mvn < lifecycle1 > < lifecycle2 >
if (A -> B, B -> C) then (A -> C)
버전 또는 라이브러리간의 충돌이 일어날 수 있으므로 주의!!
의존관계 디버그
mvn dependency:tree
를 이용하여 의존관계 트리를 찍어볼 수 있다.
<scope></scope>
를 이용하여 설정한다.
Groovy와 코틀린 기반 빌드툴
build를 위해 하는 작업
여러 프로젝트(Spring Boot, Spring Security 등)의 묶음
여러 모듈의 묶음
프로젝트 set up 시간을 줄여준다.
FixedAmountVoucher fixedAmountVoucher = new FixedAmountVoucher()
// 구상체가 완전히 정해져 있다. 변경될 여지가 없다!
var order = new Order(UUID.randomUUID(), customerId, orderItems, fixedAmountVoucher);
...
// FixedAmountVoucher의 변경에 영향을 받습니다.
public class Order {
public Order(UUID orderId, UUID customerId, List<OrderItem> orderItems, FixedAmountVoucher fixedAmountVoucher) {
...
this.fixedAmountVoucher = fixedAmountVoucher;
}
}
var fixedAmountVoucher = new FixedAmountVoucher(UUID.randomUUID(), 10L);
// 런타임 시점에 구상체 결정
var order = new Order(UUID.randomUUID(), customerId, orderItems, fixedAmountVoucher);
...
public class Order {
public Order(UUID orderId, UUID customerId, List<OrderItem> orderItems, Voucher voucher) {
...
this.voucher = voucher;
}
}
변경이 일어날 때에 관계를 맺고 있는 다른 객체에게 변화를 요구하는 정도
public record SampleRecord {
String name,
Integer age,
Address address
} {}
var str = “Hello World”;
var list = new ArrayList<String>();