본문 바로가기
JAVA/배달웹 프로젝트

1. 멀티모듈 및 grade 환경설정

by PlusUltraCode 2024. 6. 28.

1. 프로젝트를 만들고 모듈을 만든다
2. Api 와 db 라는 모듈을 만들었으면 종속성을 설정해줘야 된다

service 의 build.gradle 에 먼저 들어간 뒤  나머지 설정은 다 빼주고 
plugins {
    id 'java'
}

allprojects {
    repositories {
        mavenCentral()
    }

}

이렇게 설정해준다. 즉 모든 프로젝트들은 나의 말을 따라라 ~~
다음으로 Api/build.gradle 로 들어가서

dependecies 에 
implementation project(':db') 추가해준다

지금까지 설정하면 자바프로젝트다. 이제 우리는 스프링 프로젝트로 바꿔줘야 된다.
먼저 부모build.gradle 로 가서 
plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.5'
    id 'io.spring.dependency-management' version '1.1.4'
}
이렇게 코드를 넣어준다.

그다음 bootJar 이라는게 있다. 부모 프로젝트는 src 가 없기 대문에 bootJar 이 필요없다.
스프링에서 자동으로 bootJar이 만들어지는데 우리는 이걸 false해야 된다. 또한 Jar 도 패키징 안할것이다.
bootJar {
    enabled = false;
}

jar{
    enabled = false;
}


이제 자식을 설정해줄거다/

똑같이 plugin 에다가

plugins {
    id 'java'
    id 'org.springframework.boot' 
    id 'io.spring.dependency-management' 
}

다만 버전은 명시하지 안흔다. 자동으로 부모를 따라가게 할거기 때문이다.




group = 'org.example'
version = '1.0-SNAPSHOT'

java {
    sourceCompatibility = '21'
}
configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {

    implementation project(':db')

//lombok
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'

//spring
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    //db
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

 

//swagger
    implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'

    //jwt


    implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.5'
    runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.5'
    runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.5'



}

test {
    useJUnitPlatform()
}

bootJar{
    enabled  = true
}
jar{
    enabled = false
}

의존성을 넣었으면

Api main 을 실행시켜 볼것이다. org.delivery.api 패키지를 만들고
ApiApplication 클래스를 만든뒤

@SpringBootApplication
public class ApiApplication {
    public static void main(String[] args) {
        SpringApplication.run(ApiApplication.class,args);
    }
}
 생성하여 실행시켜준다.


db build grade

plugins {
    id 'java'
    id 'org.springframework.boot'
    id 'io.spring.dependency-management'
}

group = 'org.example'
version = '1.0-SNAPSHOT'

java {
    sourceCompatibility = '21'
}
configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    runtimeOnly 'com.mysql:mysql-connector-j'

    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'

}

test {
    useJUnitPlatform()
}

bootJar{
    enabled = false
}

jar{
    enabled = true
}



Api/application.yaml 

spring:
  jpa:
    show-sql: true
    properties:
      format_sql: true
      dialect: org.hibernate.dialect.MySQL8Dialect
    hibernate:
      ddl-auto: validate
  datasource:
    url: jdbc:mysql://localhost:3306/delivery?useSSL=false&useUnicode=true&allowPublicKeyRetrieval=true
    driver-class-name:  com.mysql.cj.jdbc.Driver
    username: root
    password: root

token:
  secret:
    key: SpringBootJWTHelperTokenSecretKeyValue123!@#
  access-token:
    plus-hour: 1
  refresh-token:
    plus-hour: 12



설정

즉 반드시 jpa 를 쓰게 되면 yaml 파일로 db 와 연결해줘야 된다.