빌드, 의존성(필요한 라이브러리 jar(Java Archive))관리, 배포, 테스트 툴
자바 설치 O
환경 변수 JAVA_HOME
mvn archetype:generate
groupId : 소속된 그룹(도메인 방식)
예) org.project
artifactId : 프로젝트 구분 명칭
src/main/java : 작성하는 자바코드(.java)src/main/resources : 정적 자원 src/test/java : 테스트 자바 코드(.java)src/test/resources : 테스트시 필요 정적 자원maven 설정 파일
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> : 소스 인코딩
<maven.compiler.source>17</maven.compiler.source> : 소스 컴파일 자바 버전
<maven.compiler.target>17</maven.compiler.target> : 배포 파일(jar) 생성시 자바 버전
</properties>
<dependencies>
</dependencies>
<plugins> //백그라운드에서 실행 dependencies와 같은 의존성이지만 성격이다름.
</plugins>
사용자명/.m2 👉 메이븐 레포지토리 (공유)
compile (기본값) : 빌드시 포함, 배포시 포함 runtime : 빌드시 포함 X, 실행할때는 필요한 라이브러리 👉 (동적 로딩 - Class.forName(...))provided : 개발시에만 필요, 빌드 및 배포시에는 미포함 👉 플랫폼 내에서 제공되는 라이브러리servlet-api, servlet.jsp-apitest : 테스트 시에만 필요한 라이브러리mvn compile : java 파일 -> class 컴파일 (target 폴더)mvn clean : 컴파일 소스 전체 지우기(target 폴더 삭제)mvn clean compile : 기존 컴파일 소스 삭제 후 다시 컴파일 mvn test : 테스트 케이스를 실행(전체)mvn package : 배포 파일 생성(jar)mvn clean package : mvn) 기존 컴파일 소스 삭제 후 배포 실행 참고
java -jar 파일명.jar : jar파일 실행
CTRL + SHIFT + B
maven central : 의존성 저장소
mvnrepository
@Data@Getter@Setter@Tostring@EqualsAndHashCode@EqualsAndHashCode
@Getter @Setter @ToString
public class Member {
private String userId;
private String userNm;
private String email;
private LocalDateTime regDt;
}
생성자
@NoArgsConstructor : 기본생성자@AllArgsConstructor : 모든 멤버 변수로 초기화 생성자@RequiredArgsConstructor : 필수 멤버 변수를 생성자 매개변수로 추가@NonNull@Data
@AllArgsConstructor
//@NoArgsConstructor(access = AccessLevel.PRIVATE) //기본생성자(PRIVATE로 접근제한)
@NoArgsConstructor() //기본생성자
@RequiredArgsConstructor
public class Member {
@NonNull
private String userId;
@NonNull
private String userNm;
private String email;
private LocalDateTime regDt;
}
@Data
@RequiredArgsConstructor
public class Board {
private int seq;
private final String subject;
private final String content;
private String poster;
}
public class Ex02 {
@Test
void test2(){
Board board = new Board("제목", "내용");
System.out.println(board);
}
}
@ToString.Exclude : toString()에 추가 배재@ToString.Include : toString()에 추가@Data
@AllArgsConstructor
//@NoArgsConstructor(access = AccessLevel.PRIVATE) //기본생성자(PRIVATE로 접근제한)
@NoArgsConstructor() //기본생성자
@RequiredArgsConstructor
public class Member {
@NonNull
private String userId;
@NonNull
private String userNm;
private String email;
@ToString.Exclude
private LocalDateTime regDt; //toString 에 배제된다.
}
@Builder : 빌더 패턴으로 자동 생성public class User {
private String userId;
private String userNm;
private String email;
private LocalDateTime regDt;
private User(){}
public static Builder builder(){
return new Builder();
}
@Override
public String toString() {
return "User{" +
"userId='" + userId + '\'' +
", userNm='" + userNm + '\'' +
", email='" + email + '\'' +
", regDt=" + regDt +
'}';
}
public static class Builder{
private User user = new User();
public Builder userId(String userId){
user.userId = userId;
return this;
}
public Builder userNm(String userNm){
user.userNm = userNm;
return this;
}
public Builder email(String email){
user.email = email;
return this;
}
public Builder regDt(LocalDateTime regDt){
user.regDt = regDt;
return this;
}
public User build(){
return user;
}
}
}
public class Ex02 {
@Test
void test3(){
User user = User.builder()
.userId("USER01")
.userNm("사용자01")
.email("User@naver.com")
.regDt(LocalDateTime.now())
.build();
System.out.println(user);
}
}
@Bulder
@Builder @ToString
public class User2 {
private String userId;
private String userNm;
private String email;
private LocalDateTime regDt;
}
@Test
void test4(){
User2 user = User2.builder()
.userId("User02")
.userNm("사용자01")
.email("user2@naver.com")
.regDt(LocalDateTime.now())
.build();
System.out.println(user);
}
@Builder에서 기본생성자를 꼭 써야되는 경우
@Builder @ToString
//기본생성자를 꼭 서야되는 경우 @NoArgsConstructor @AllArgsConstructor
@NoArgsConstructor @AllArgsConstructor
public class User2 {
private String userId;
private String userNm;
private String email;
private LocalDateTime regDt;
}
1 .18. 30
(Major) (Minor) (Patch)
Major - 기존 버전과 호환되지 않은 버전
Minor - 호환성에는 문제가 없는 기능 추가, 수정
Patch - 오류 버그 수정 있는 경우