Browse Source

refactor: 모듈 수정

- db config 분리
- module 구성 변경
develop
지대한 7 months ago
parent
commit
56b0c72f63
  1. 21
      app/kac-app/build.gradle
  2. 7
      app/kac-app/src/main/resources/application.yml
  3. 56
      app/kac-app/src/main/resources/static/docs/index.html
  4. 6
      app/kac-app/src/test/java/kr/co/palnet/kac/BaseTest.java
  5. 540
      app/kac-app/src/test/java/kr/co/palnet/kac/com/code/ComnCodeControllerTest.java
  6. 92
      build.gradle
  7. 12
      common/config-db/build.gradle
  8. 2
      common/config-db/src/main/java/kr/co/palnet/kac/config/db/KacJpaConfig.java
  9. 2
      common/config-db/src/main/java/kr/co/palnet/kac/config/db/QueryDslConfig.java
  10. 5
      common/config-db/src/main/resources/application-db.yml
  11. 5
      data/cns/build.gradle
  12. 5
      data/com/build.gradle
  13. 5
      data/ctr/build.gradle
  14. 5
      data/flt/build.gradle
  15. 5
      data/other/build.gradle
  16. 5
      data/pty/build.gradle
  17. 5
      settings.gradle
  18. 10
      web/api-common/build.gradle
  19. 4
      web/security/build.gradle

21
app/kac-app/build.gradle

@ -11,17 +11,19 @@ configurations {
dependencies {
implementation "$boot:spring-boot-starter-web"
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
// security
implementation "$boot:spring-boot-starter-security"
// implementation "com.auth0:java-jwt:4.4.0"
// db
runtimeOnly "com.mysql:mysql-connector-j"
implementation "org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:1.16"
// runtimeOnly "com.mysql:mysql-connector-j"
// implementation "org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:1.16"
implementation("org.springframework:spring-tx")
// jpa
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
implementation "$boot:spring-boot-starter-data-jpa"
// implementation "$boot:spring-boot-starter-data-jpa"
// querydsl
implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta"
// implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta"
// rest doc
@ -32,10 +34,11 @@ dependencies {
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation project(":common-core")
implementation project(":common-util")
implementation project(":web-security")
implementation project(":web-api-common")
implementation project(":common:core")
// implementation project(":common:config-db")
implementation project(":common:util")
implementation project(":web:security")
implementation project(":web:api-common")
}
ext {

7
app/kac-app/src/main/resources/application.yml

@ -1,16 +1,11 @@
spring:
profiles:
include:
- database
- swagger
- db
threads:
virtual:
enabled: true
jpa:
hibernate:
ddl-auto: none
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
logging:
level:

56
app/kac-app/src/main/resources/static/docs/index.html

@ -519,7 +519,7 @@ Content-Type: application/json;charset=UTF-8
Content-Length: 143
[ {
"groupCd" : "NEW_GROUP_1707813860",
"groupCd" : "NEW_GROUP_1707924397",
"siteCd" : "KAC",
"groupCdNm" : "신규그룹001",
"rm" : "비고....",
@ -626,7 +626,7 @@ Content-Length: 143
<h4 id="_http_request_info_2"><a class="link" href="#_http_request_info_2">[HTTP REQUEST INFO]</a></h4>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight nowrap"><code data-lang="http" class="language-http hljs">GET /v1/com/code/code?groupCd=NEW_GROUP_1707813860&amp;langDivCd=ko_KR HTTP/1.1
<pre class="highlightjs highlight nowrap"><code data-lang="http" class="language-http hljs">GET /v1/com/code/code?groupCd=NEW_GROUP_1707924397&amp;langDivCd=ko_KR HTTP/1.1
Content-Type: application/json;charset=UTF-8
Accept: application/json
Host: localhost:8080</code></pre>
@ -668,7 +668,7 @@ Content-Type: application/json;charset=UTF-8
Content-Length: 190
[ {
"groupCd" : "NEW_GROUP_1707813860",
"groupCd" : "NEW_GROUP_1707924397",
"cdId" : "NEW_CODE001",
"cdNm" : "신규코드001",
"upperCd" : null,
@ -763,7 +763,7 @@ Content-Type: application/json;charset=UTF-8
Content-Length: 143
[ {
"groupCd" : "NEW_GROUP_1707813860",
"groupCd" : "NEW_GROUP_1707924397",
"siteCd" : "KAC",
"groupCdNm" : "신규그룹001",
"rm" : "비고....",
@ -835,7 +835,7 @@ Content-Length: 118
Host: localhost:8080
{
"groupCd" : "NEW_GROUP_1707813860",
"groupCd" : "NEW_GROUP_1707924397",
"siteCd" : "KAC",
"groupCdNm" : "신규그룹001",
"rm" : "비고...."
@ -894,14 +894,14 @@ Content-Type: application/json;charset=UTF-8
Content-Length: 276
{
"groupCd" : "NEW_GROUP_1707813860",
"groupCd" : "NEW_GROUP_1707924397",
"siteCd" : "KAC",
"groupCdNm" : "신규그룹001",
"rm" : "비고....",
"createUserId" : "CREATE_USER",
"createDt" : "2024-02-13T17:44:20.692308",
"createDt" : "2024-02-15T00:26:37.902778",
"updateUserId" : "CREATE_USER",
"updateDt" : "2024-02-13T17:44:20.692313"
"updateDt" : "2024-02-15T00:26:37.902782"
}</code></pre>
</div>
</div>
@ -987,7 +987,7 @@ Content-Length: 132
Host: localhost:8080
{
"groupCd" : "NEW_GROUP_1707813860",
"groupCd" : "NEW_GROUP_1707924397",
"cdId" : "NEW_CODE001",
"sortOrdr" : 0,
"addInfoValue" : "추가!!",
@ -1053,16 +1053,16 @@ Content-Type: application/json;charset=UTF-8
Content-Length: 310
{
"groupCd" : "NEW_GROUP_1707813860",
"groupCd" : "NEW_GROUP_1707924397",
"cdId" : "NEW_CODE001",
"upperCd" : null,
"sortOrdr" : 0,
"addInfoValue" : "추가!!",
"useYn" : "Y",
"createUserId" : "CREATE_USER",
"createDt" : "2024-02-13T17:44:20.680589",
"createDt" : "2024-02-15T00:26:37.887931",
"updateUserId" : "CREATE_USER",
"updateDt" : "2024-02-13T17:44:20.680594"
"updateDt" : "2024-02-15T00:26:37.887936"
}</code></pre>
</div>
</div>
@ -1160,7 +1160,7 @@ Content-Length: 144
Host: localhost:8080
{
"groupCd" : "NEW_GROUP_1707813860",
"groupCd" : "NEW_GROUP_1707924397",
"cdId" : "NEW_CODE001",
"langDivCd" : "ko_KR",
"cdNm" : "신규코드001",
@ -1226,15 +1226,15 @@ Content-Type: application/json;charset=UTF-8
Content-Length: 302
{
"groupCd" : "NEW_GROUP_1707813860",
"groupCd" : "NEW_GROUP_1707924397",
"cdId" : "NEW_CODE001",
"langDivCd" : "ko_KR",
"cdNm" : "신규코드001",
"rm" : "비고....",
"createUserId" : "CREATE_USER",
"createDt" : "2024-02-13T17:44:20.601889",
"createDt" : "2024-02-15T00:26:37.826757",
"updateUserId" : "CREATE_USER",
"updateDt" : "2024-02-13T17:44:20.601893"
"updateDt" : "2024-02-15T00:26:37.826761"
}</code></pre>
</div>
</div>
@ -1326,7 +1326,7 @@ Content-Length: 118
Host: localhost:8080
{
"groupCd" : "NEW_GROUP_1707813860",
"groupCd" : "NEW_GROUP_1707924397",
"siteCd" : "KAC",
"groupCdNm" : "신규그룹001",
"rm" : "비고...."
@ -1385,14 +1385,14 @@ Content-Type: application/json;charset=UTF-8
Content-Length: 275
{
"groupCd" : "NEW_GROUP_1707813860",
"groupCd" : "NEW_GROUP_1707924397",
"siteCd" : "KAC",
"groupCdNm" : "신규그룹001",
"rm" : "비고....",
"createUserId" : "CREATE_USER",
"createDt" : "2024-02-13T17:44:20.63112",
"createDt" : "2024-02-15T00:26:37.84228",
"updateUserId" : "UPDATE_USER",
"updateDt" : "2024-02-13T17:44:20.633442"
"updateDt" : "2024-02-15T00:26:37.844978"
}</code></pre>
</div>
</div>
@ -1478,7 +1478,7 @@ Content-Length: 132
Host: localhost:8080
{
"groupCd" : "NEW_GROUP_1707813860",
"groupCd" : "NEW_GROUP_1707924397",
"cdId" : "NEW_CODE001",
"sortOrdr" : 0,
"addInfoValue" : "수정!!",
@ -1544,16 +1544,16 @@ Content-Type: application/json;charset=UTF-8
Content-Length: 310
{
"groupCd" : "NEW_GROUP_1707813860",
"groupCd" : "NEW_GROUP_1707924397",
"cdId" : "NEW_CODE001",
"upperCd" : null,
"sortOrdr" : 0,
"addInfoValue" : "수정!!",
"useYn" : "Y",
"createUserId" : "CREATE_USER",
"createDt" : "2024-02-13T17:44:20.542706",
"createDt" : "2024-02-15T00:26:37.757743",
"updateUserId" : "UPDATE_USER",
"updateDt" : "2024-02-13T17:44:20.555142"
"updateDt" : "2024-02-15T00:26:37.770459"
}</code></pre>
</div>
</div>
@ -1651,7 +1651,7 @@ Content-Length: 143
Host: localhost:8080
{
"groupCd" : "NEW_GROUP_1707813860",
"groupCd" : "NEW_GROUP_1707924397",
"cdId" : "NEW_CODE001",
"langDivCd" : "ko_KR",
"cdNm" : "신규코드001",
@ -1717,15 +1717,15 @@ Content-Type: application/json;charset=UTF-8
Content-Length: 301
{
"groupCd" : "NEW_GROUP_1707813860",
"groupCd" : "NEW_GROUP_1707924397",
"cdId" : "NEW_CODE001",
"langDivCd" : "ko_KR",
"cdNm" : "신규코드001",
"rm" : "수정...",
"createUserId" : "CREATE_USER",
"createDt" : "2024-02-13T17:44:20.577931",
"createDt" : "2024-02-15T00:26:37.798977",
"updateUserId" : "UPDATE_USER",
"updateDt" : "2024-02-13T17:44:20.580741"
"updateDt" : "2024-02-15T00:26:37.803818"
}</code></pre>
</div>
</div>

6
app/kac-app/src/test/java/kr/co/palnet/kac/BaseTest.java

@ -1,9 +1,13 @@
package kr.co.palnet.kac;
import com.fasterxml.jackson.databind.ObjectMapper;
import kr.co.palnet.kac.app.KacAppApplication;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.restdocs.RestDocumentationContextProvider;
import org.springframework.restdocs.RestDocumentationExtension;
import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
@ -13,6 +17,8 @@ import org.springframework.web.filter.CharacterEncodingFilter;
import static org.springframework.restdocs.operation.preprocess.Preprocessors.modifyUris;
import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint;
@SpringBootTest(classes = KacAppApplication.class)
@ExtendWith({RestDocumentationExtension.class})
public class BaseTest {
@Autowired

540
app/kac-app/src/test/java/kr/co/palnet/kac/com/code/ComnCodeControllerTest.java

@ -1,37 +1,29 @@
package kr.co.palnet.kac.com.code;
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document;
import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessResponse;
import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint;
import static org.springframework.restdocs.payload.PayloadDocumentation.*;
import static org.springframework.restdocs.request.RequestDocumentation.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import kr.co.palnet.kac.BaseTest;
import kr.co.palnet.kac.api.v1.common.code.model.FormCodeGroupRQ;
import kr.co.palnet.kac.api.v1.common.code.model.FormCodeLangRQ;
import kr.co.palnet.kac.api.v1.common.code.model.FormCodeRQ;
import kr.co.palnet.kac.api.v1.common.code.service.ComCodeService;
import lombok.RequiredArgsConstructor;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.restdocs.RestDocumentationExtension;
import org.springframework.restdocs.payload.JsonFieldType;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import kr.co.palnet.kac.app.KacAppApplication;
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document;
import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessResponse;
import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint;
import static org.springframework.restdocs.payload.PayloadDocumentation.*;
import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName;
import static org.springframework.restdocs.request.RequestDocumentation.queryParameters;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@SpringBootTest(classes = KacAppApplication.class)
@ExtendWith({RestDocumentationExtension.class})
@RequiredArgsConstructor
public class ComnCodeControllerTest extends BaseTest {
@Autowired
@ -41,54 +33,54 @@ public class ComnCodeControllerTest extends BaseTest {
@DisplayName("언어코드 삭제")
@Test
public void deleteLang() throws Exception{
public void deleteLang() throws Exception {
String groupCd = "NEW_GROUP001";
String cdId = "NEW_CODE001";
String langDivCd = "ko_KR";
this.mockMvc.perform(
delete(this.BASE_URL + "/lang?groupCd=" + groupCd + "&cdId=" + cdId + "&langDivCd=" + langDivCd)
.contentType(MediaType.APPLICATION_JSON_VALUE)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
.andDo(print())
.andDo(
document(
"com/code/lang/delete", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름
preprocessResponse(prettyPrint()),
queryParameters(
parameterWithName("groupCd").description("그룹 아이디"),
parameterWithName("cdId").description("코드 아이디"),
parameterWithName("langDivCd").description("삭제할 언어코드")
delete(this.BASE_URL + "/lang?groupCd=" + groupCd + "&cdId=" + cdId + "&langDivCd=" + langDivCd)
.contentType(MediaType.APPLICATION_JSON_VALUE)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
.andDo(print())
.andDo(
document(
"com/code/lang/delete", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름
preprocessResponse(prettyPrint()),
queryParameters(
parameterWithName("groupCd").description("그룹 아이디"),
parameterWithName("cdId").description("코드 아이디"),
parameterWithName("langDivCd").description("삭제할 언어코드")
)
)
)
)
)
.andExpect(status().isOk());
.andExpect(status().isOk());
}
@DisplayName("코드 삭제")
@Test
public void deleteCode() throws Exception{
public void deleteCode() throws Exception {
String groupCd = "NEW_GROUP001";
String cdId = "NEW_CODE001";
this.mockMvc.perform(
delete(this.BASE_URL + "/code?groupCd=" + groupCd + "&cdId=" + cdId)
.contentType(MediaType.APPLICATION_JSON_VALUE)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
.andDo(print())
.andDo(
document(
"com/code/code/delete", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름
preprocessResponse(prettyPrint()),
queryParameters(
parameterWithName("groupCd").description("그룹 아이디"),
parameterWithName("cdId").description("코드 아이디")
delete(this.BASE_URL + "/code?groupCd=" + groupCd + "&cdId=" + cdId)
.contentType(MediaType.APPLICATION_JSON_VALUE)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
.andDo(print())
.andDo(
document(
"com/code/code/delete", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름
preprocessResponse(prettyPrint()),
queryParameters(
parameterWithName("groupCd").description("그룹 아이디"),
parameterWithName("cdId").description("코드 아이디")
)
)
)
)
)
.andExpect(status().isOk());
.andExpect(status().isOk());
}
@DisplayName("그룹 삭제")
@ -98,27 +90,27 @@ public class ComnCodeControllerTest extends BaseTest {
String deleteGroupCd = "NEW_GROUP001";
this.mockMvc.perform(
delete(this.BASE_URL + "/group?groupCd=" + deleteGroupCd)
.contentType(MediaType.APPLICATION_JSON_VALUE)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
.andDo(print())
.andDo(
document(
"com/code/group/delete", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름
preprocessResponse(prettyPrint()),
queryParameters(
parameterWithName("groupCd").description("그룹 아이디")
delete(this.BASE_URL + "/group?groupCd=" + deleteGroupCd)
.contentType(MediaType.APPLICATION_JSON_VALUE)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
.andDo(print())
.andDo(
document(
"com/code/group/delete", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름
preprocessResponse(prettyPrint()),
queryParameters(
parameterWithName("groupCd").description("그룹 아이디")
)
)
)
)
)
.andExpect(status().isOk());
.andExpect(status().isOk());
}
@DisplayName("코드의 언어코드 수정")
@Test
@Transactional
public void updateCodeLang() throws Exception{
public void updateCodeLang() throws Exception {
String randomNm = "NEW_GROUP_" + System.currentTimeMillis();
randomNm = randomNm.substring(0, 20);
@ -133,53 +125,53 @@ public class ComnCodeControllerTest extends BaseTest {
comCodeService.createCodeLang(langRq);
String jsonRQ = """
{
"groupCd": "%s",
"cdId": "NEW_CODE001",
"langDivCd": "ko_KR",
"cdNm": "신규코드001",
"rm": "수정..."
}
""".formatted(randomNm);
{
"groupCd": "%s",
"cdId": "NEW_CODE001",
"langDivCd": "ko_KR",
"cdNm": "신규코드001",
"rm": "수정..."
}
""".formatted(randomNm);
this.mockMvc.perform(
put(this.BASE_URL + "/lang")
.contentType(MediaType.APPLICATION_JSON_VALUE)
.content(jsonRQ)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
.andDo(print())
.andDo(
document(
"com/code/lang/update", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름
preprocessResponse(prettyPrint()),
requestFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("cdId").type(JsonFieldType.STRING).description("코드 아이디"),
fieldWithPath("langDivCd").type(JsonFieldType.STRING).description("언어코드"),
fieldWithPath("cdNm").type(JsonFieldType.STRING).description("코드이름[언어별]"),
fieldWithPath("rm").type(JsonFieldType.STRING).description("비고")
),
responseFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("cdId").type(JsonFieldType.STRING).description("코드 아이디"),
fieldWithPath("langDivCd").type(JsonFieldType.STRING).description("언어코드"),
fieldWithPath("cdNm").type(JsonFieldType.STRING).description("코드이름[언어별]"),
fieldWithPath("rm").type(JsonFieldType.STRING).description("비고"),
fieldWithPath("createUserId").type(JsonFieldType.STRING).description("등록한 유저 아이디"),
fieldWithPath("createDt").type(JsonFieldType.STRING).description("등록일시"),
fieldWithPath("updateUserId").type(JsonFieldType.STRING).description("수정한 유저 아이디"),
fieldWithPath("updateDt").type(JsonFieldType.STRING).description("수정일시")
put(this.BASE_URL + "/lang")
.contentType(MediaType.APPLICATION_JSON_VALUE)
.content(jsonRQ)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
.andDo(print())
.andDo(
document(
"com/code/lang/update", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름
preprocessResponse(prettyPrint()),
requestFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("cdId").type(JsonFieldType.STRING).description("코드 아이디"),
fieldWithPath("langDivCd").type(JsonFieldType.STRING).description("언어코드"),
fieldWithPath("cdNm").type(JsonFieldType.STRING).description("코드이름[언어별]"),
fieldWithPath("rm").type(JsonFieldType.STRING).description("비고")
),
responseFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("cdId").type(JsonFieldType.STRING).description("코드 아이디"),
fieldWithPath("langDivCd").type(JsonFieldType.STRING).description("언어코드"),
fieldWithPath("cdNm").type(JsonFieldType.STRING).description("코드이름[언어별]"),
fieldWithPath("rm").type(JsonFieldType.STRING).description("비고"),
fieldWithPath("createUserId").type(JsonFieldType.STRING).description("등록한 유저 아이디"),
fieldWithPath("createDt").type(JsonFieldType.STRING).description("등록일시"),
fieldWithPath("updateUserId").type(JsonFieldType.STRING).description("수정한 유저 아이디"),
fieldWithPath("updateDt").type(JsonFieldType.STRING).description("수정일시")
)
)
)
)
)
.andExpect(status().isOk());
.andExpect(status().isOk());
}
@DisplayName("코드 수정")
@Test
@Transactional
public void updateCode() throws Exception{
public void updateCode() throws Exception {
String randomNm = "NEW_GROUP_" + System.currentTimeMillis();
randomNm = randomNm.substring(0, 20);
@ -194,54 +186,54 @@ public class ComnCodeControllerTest extends BaseTest {
comCodeService.createCodeLang(langRq);
String jsonRQ = """
{
"groupCd": "%s",
"cdId": "NEW_CODE001",
"sortOrdr": 0,
"addInfoValue": "수정!!",
"useYn": "Y"
}
""".formatted(randomNm);
{
"groupCd": "%s",
"cdId": "NEW_CODE001",
"sortOrdr": 0,
"addInfoValue": "수정!!",
"useYn": "Y"
}
""".formatted(randomNm);
this.mockMvc.perform(
put(this.BASE_URL + "/code")
.contentType(MediaType.APPLICATION_JSON_VALUE)
.content(jsonRQ)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
.andDo(print())
.andDo(
document(
"com/code/code/update", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름
preprocessResponse(prettyPrint()),
requestFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("cdId").type(JsonFieldType.STRING).description("코드 아이디"),
fieldWithPath("sortOrdr").type(JsonFieldType.NUMBER).description("정렬순서"),
fieldWithPath("addInfoValue").type(JsonFieldType.STRING).description("추가사항"),
fieldWithPath("useYn").type(JsonFieldType.STRING).description("사용여부")
),
responseFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("cdId").type(JsonFieldType.STRING).description("코드 아이디"),
fieldWithPath("upperCd").type(JsonFieldType.STRING).description("상위 아이디").optional(),
fieldWithPath("sortOrdr").type(JsonFieldType.NUMBER).description("정렬순서"),
fieldWithPath("addInfoValue").type(JsonFieldType.STRING).description("추가사항"),
fieldWithPath("useYn").type(JsonFieldType.STRING).description("사용여부"),
fieldWithPath("createUserId").type(JsonFieldType.STRING).description("등록한 유저 아이디"),
fieldWithPath("createDt").type(JsonFieldType.STRING).description("등록일시"),
fieldWithPath("updateUserId").type(JsonFieldType.STRING).description("수정한 유저 아이디"),
fieldWithPath("updateDt").type(JsonFieldType.STRING).description("수정일시")
put(this.BASE_URL + "/code")
.contentType(MediaType.APPLICATION_JSON_VALUE)
.content(jsonRQ)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
)
)
.andExpect(status().isOk());
.andDo(print())
.andDo(
document(
"com/code/code/update", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름
preprocessResponse(prettyPrint()),
requestFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("cdId").type(JsonFieldType.STRING).description("코드 아이디"),
fieldWithPath("sortOrdr").type(JsonFieldType.NUMBER).description("정렬순서"),
fieldWithPath("addInfoValue").type(JsonFieldType.STRING).description("추가사항"),
fieldWithPath("useYn").type(JsonFieldType.STRING).description("사용여부")
),
responseFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("cdId").type(JsonFieldType.STRING).description("코드 아이디"),
fieldWithPath("upperCd").type(JsonFieldType.STRING).description("상위 아이디").optional(),
fieldWithPath("sortOrdr").type(JsonFieldType.NUMBER).description("정렬순서"),
fieldWithPath("addInfoValue").type(JsonFieldType.STRING).description("추가사항"),
fieldWithPath("useYn").type(JsonFieldType.STRING).description("사용여부"),
fieldWithPath("createUserId").type(JsonFieldType.STRING).description("등록한 유저 아이디"),
fieldWithPath("createDt").type(JsonFieldType.STRING).description("등록일시"),
fieldWithPath("updateUserId").type(JsonFieldType.STRING).description("수정한 유저 아이디"),
fieldWithPath("updateDt").type(JsonFieldType.STRING).description("수정일시")
)
)
)
.andExpect(status().isOk());
}
@DisplayName("그룹 수정")
@Test
@Transactional
public void updateCodeGroup() throws Exception{
public void updateCodeGroup() throws Exception {
String randomNm = "NEW_GROUP_" + System.currentTimeMillis();
randomNm = randomNm.substring(0, 20);
@ -251,50 +243,50 @@ public class ComnCodeControllerTest extends BaseTest {
String jsonRQ = """
{
"groupCd": "%s",
"siteCd": "KAC",
"groupCdNm": "신규그룹001",
"rm": "비고...."
}
""".formatted(randomNm);
{
"groupCd": "%s",
"siteCd": "KAC",
"groupCdNm": "신규그룹001",
"rm": "비고...."
}
""".formatted(randomNm);
this.mockMvc.perform(
put(this.BASE_URL + "/group")
.contentType(MediaType.APPLICATION_JSON_VALUE)
.content(jsonRQ)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
.andDo(print())
.andDo(
document(
"com/code/group/update", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름
preprocessResponse(prettyPrint()),
requestFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("siteCd").type(JsonFieldType.STRING).description("사이트코드"),
fieldWithPath("groupCdNm").type(JsonFieldType.STRING).description("그룹이름"),
fieldWithPath("rm").type(JsonFieldType.STRING).description("비고")
),
responseFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("siteCd").type(JsonFieldType.STRING).description("사이트코드"),
fieldWithPath("groupCdNm").type(JsonFieldType.STRING).description("그룹이름"),
fieldWithPath("rm").type(JsonFieldType.STRING).description("비고"),
fieldWithPath("createUserId").type(JsonFieldType.STRING).description("등록한 유저 아이디"),
fieldWithPath("createDt").type(JsonFieldType.STRING).description("등록일시"),
fieldWithPath("updateUserId").type(JsonFieldType.STRING).description("수정한 유저 아이디"),
fieldWithPath("updateDt").type(JsonFieldType.STRING).description("수정일시")
put(this.BASE_URL + "/group")
.contentType(MediaType.APPLICATION_JSON_VALUE)
.content(jsonRQ)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
.andDo(print())
.andDo(
document(
"com/code/group/update", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름
preprocessResponse(prettyPrint()),
requestFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("siteCd").type(JsonFieldType.STRING).description("사이트코드"),
fieldWithPath("groupCdNm").type(JsonFieldType.STRING).description("그룹이름"),
fieldWithPath("rm").type(JsonFieldType.STRING).description("비고")
),
responseFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("siteCd").type(JsonFieldType.STRING).description("사이트코드"),
fieldWithPath("groupCdNm").type(JsonFieldType.STRING).description("그룹이름"),
fieldWithPath("rm").type(JsonFieldType.STRING).description("비고"),
fieldWithPath("createUserId").type(JsonFieldType.STRING).description("등록한 유저 아이디"),
fieldWithPath("createDt").type(JsonFieldType.STRING).description("등록일시"),
fieldWithPath("updateUserId").type(JsonFieldType.STRING).description("수정한 유저 아이디"),
fieldWithPath("updateDt").type(JsonFieldType.STRING).description("수정일시")
)
)
)
)
)
.andExpect(status().isOk());
.andExpect(status().isOk());
}
@DisplayName("코드의 언어코드 추가")
@Test
@Transactional
public void createCodeLang() throws Exception{
public void createCodeLang() throws Exception {
String langDivCd = "ko_KR";
@ -308,54 +300,54 @@ public class ComnCodeControllerTest extends BaseTest {
comCodeService.createCode(codeRq);
String jsonRQ = """
{
"groupCd": "%s",
"cdId": "NEW_CODE001",
"langDivCd": "%s",
"cdNm": "신규코드001",
"rm": "비고...."
}
""".formatted(randomNm,langDivCd);
{
"groupCd": "%s",
"cdId": "NEW_CODE001",
"langDivCd": "%s",
"cdNm": "신규코드001",
"rm": "비고...."
}
""".formatted(randomNm, langDivCd);
this.mockMvc.perform(
post(this.BASE_URL + "/lang")
.contentType(MediaType.APPLICATION_JSON_VALUE)
.content(jsonRQ)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
.andDo(print())
.andDo(
document(
"com/code/lang/create", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름
preprocessResponse(prettyPrint()),
requestFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("cdId").type(JsonFieldType.STRING).description("코드 아이디"),
fieldWithPath("langDivCd").type(JsonFieldType.STRING).description("언어코드"),
fieldWithPath("cdNm").type(JsonFieldType.STRING).description("코드이름[언어별]"),
fieldWithPath("rm").type(JsonFieldType.STRING).description("비고")
),
responseFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("cdId").type(JsonFieldType.STRING).description("코드 아이디"),
fieldWithPath("langDivCd").type(JsonFieldType.STRING).description("언어코드"),
fieldWithPath("cdNm").type(JsonFieldType.STRING).description("코드이름[언어별]"),
fieldWithPath("rm").type(JsonFieldType.STRING).description("비고"),
fieldWithPath("createUserId").type(JsonFieldType.STRING).description("등록한 유저 아이디"),
fieldWithPath("createDt").type(JsonFieldType.STRING).description("등록일시"),
fieldWithPath("updateUserId").type(JsonFieldType.STRING).description("수정한 유저 아이디"),
fieldWithPath("updateDt").type(JsonFieldType.STRING).description("수정일시")
post(this.BASE_URL + "/lang")
.contentType(MediaType.APPLICATION_JSON_VALUE)
.content(jsonRQ)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
)
)
.andExpect(status().isOk());
.andDo(print())
.andDo(
document(
"com/code/lang/create", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름
preprocessResponse(prettyPrint()),
requestFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("cdId").type(JsonFieldType.STRING).description("코드 아이디"),
fieldWithPath("langDivCd").type(JsonFieldType.STRING).description("언어코드"),
fieldWithPath("cdNm").type(JsonFieldType.STRING).description("코드이름[언어별]"),
fieldWithPath("rm").type(JsonFieldType.STRING).description("비고")
),
responseFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("cdId").type(JsonFieldType.STRING).description("코드 아이디"),
fieldWithPath("langDivCd").type(JsonFieldType.STRING).description("언어코드"),
fieldWithPath("cdNm").type(JsonFieldType.STRING).description("코드이름[언어별]"),
fieldWithPath("rm").type(JsonFieldType.STRING).description("비고"),
fieldWithPath("createUserId").type(JsonFieldType.STRING).description("등록한 유저 아이디"),
fieldWithPath("createDt").type(JsonFieldType.STRING).description("등록일시"),
fieldWithPath("updateUserId").type(JsonFieldType.STRING).description("수정한 유저 아이디"),
fieldWithPath("updateDt").type(JsonFieldType.STRING).description("수정일시")
)
)
)
.andExpect(status().isOk());
}
@DisplayName("코드 추가")
@Test
@Transactional
public void createCode() throws Exception{
public void createCode() throws Exception {
String codeNm = "NEW_CODE001";
String randomNm = "NEW_GROUP_" + System.currentTimeMillis();
@ -365,72 +357,72 @@ public class ComnCodeControllerTest extends BaseTest {
comCodeService.createCodeGroup(groupRq);
String jsonRQ = """
{
"groupCd": "%s",
"cdId": "%s",
"sortOrdr": 0,
"addInfoValue": "추가!!",
"useYn": "Y"
}
""".formatted(randomNm, codeNm);
{
"groupCd": "%s",
"cdId": "%s",
"sortOrdr": 0,
"addInfoValue": "추가!!",
"useYn": "Y"
}
""".formatted(randomNm, codeNm);
this.mockMvc.perform(
post(this.BASE_URL + "/code")
.contentType(MediaType.APPLICATION_JSON_VALUE)
.content(jsonRQ)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
.andDo(print())
.andDo(
document(
"com/code/code/create", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름
preprocessResponse(prettyPrint()),
requestFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("cdId").type(JsonFieldType.STRING).description("코드 아이디"),
fieldWithPath("sortOrdr").type(JsonFieldType.NUMBER).description("정렬순서"),
fieldWithPath("addInfoValue").type(JsonFieldType.STRING).description("추가사항"),
fieldWithPath("useYn").type(JsonFieldType.STRING).description("사용여부")
),
responseFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("cdId").type(JsonFieldType.STRING).description("코드 아이디"),
fieldWithPath("upperCd").type(JsonFieldType.STRING).description("상위 아이디").optional(),
fieldWithPath("sortOrdr").type(JsonFieldType.NUMBER).description("정렬순서"),
fieldWithPath("addInfoValue").type(JsonFieldType.STRING).description("추가사항"),
fieldWithPath("useYn").type(JsonFieldType.STRING).description("사용여부"),
fieldWithPath("createUserId").type(JsonFieldType.STRING).description("등록한 유저 아이디"),
fieldWithPath("createDt").type(JsonFieldType.STRING).description("등록일시"),
fieldWithPath("updateUserId").type(JsonFieldType.STRING).description("수정한 유저 아이디"),
fieldWithPath("updateDt").type(JsonFieldType.STRING).description("수정일시")
post(this.BASE_URL + "/code")
.contentType(MediaType.APPLICATION_JSON_VALUE)
.content(jsonRQ)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
)
)
.andExpect(status().isOk());
.andDo(print())
.andDo(
document(
"com/code/code/create", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름
preprocessResponse(prettyPrint()),
requestFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("cdId").type(JsonFieldType.STRING).description("코드 아이디"),
fieldWithPath("sortOrdr").type(JsonFieldType.NUMBER).description("정렬순서"),
fieldWithPath("addInfoValue").type(JsonFieldType.STRING).description("추가사항"),
fieldWithPath("useYn").type(JsonFieldType.STRING).description("사용여부")
),
responseFields(
fieldWithPath("groupCd").type(JsonFieldType.STRING).description("그룹코드"),
fieldWithPath("cdId").type(JsonFieldType.STRING).description("코드 아이디"),
fieldWithPath("upperCd").type(JsonFieldType.STRING).description("상위 아이디").optional(),
fieldWithPath("sortOrdr").type(JsonFieldType.NUMBER).description("정렬순서"),
fieldWithPath("addInfoValue").type(JsonFieldType.STRING).description("추가사항"),
fieldWithPath("useYn").type(JsonFieldType.STRING).description("사용여부"),
fieldWithPath("createUserId").type(JsonFieldType.STRING).description("등록한 유저 아이디"),
fieldWithPath("createDt").type(JsonFieldType.STRING).description("등록일시"),
fieldWithPath("updateUserId").type(JsonFieldType.STRING).description("수정한 유저 아이디"),
fieldWithPath("updateDt").type(JsonFieldType.STRING).description("수정일시")
)
)
)
.andExpect(status().isOk());
}
@DisplayName("코드그룹 추가")
@Test
@Transactional
public void createCodeGroup() throws Exception{
public void createCodeGroup() throws Exception {
String randomNm = "NEW_GROUP_" + System.currentTimeMillis();
randomNm = randomNm.substring(0, 20);
String jsonRQ = """
{
"groupCd": "%s",
"siteCd": "KAC",
"groupCdNm": "신규그룹001",
"rm": "비고...."
}
""".formatted(randomNm);
{
"groupCd": "%s",
"siteCd": "KAC",
"groupCdNm": "신규그룹001",
"rm": "비고...."
}
""".formatted(randomNm);
this.mockMvc.perform(
post(this.BASE_URL + "/group")
.contentType(MediaType.APPLICATION_JSON_VALUE)
.content(jsonRQ)
.accept(MediaType.APPLICATION_JSON_VALUE)
post(this.BASE_URL + "/group")
.contentType(MediaType.APPLICATION_JSON_VALUE)
.content(jsonRQ)
.accept(MediaType.APPLICATION_JSON_VALUE)
)
.andDo(print())
.andDo(
@ -461,7 +453,7 @@ public class ComnCodeControllerTest extends BaseTest {
@DisplayName("모든 코드 조회")
@Test
@Transactional(propagation = Propagation.SUPPORTS)
public void getAllCodeByGroup() throws Exception{
public void getAllCodeByGroup() throws Exception {
String randomNm = "NEW_GROUP_" + System.currentTimeMillis();
randomNm = randomNm.substring(0, 20);
@ -514,7 +506,7 @@ public class ComnCodeControllerTest extends BaseTest {
@DisplayName("모든 그룹과 코드 조회")
@Test
@Transactional
public void getAllGroupCode() throws Exception{
public void getAllGroupCode() throws Exception {
String randomNm = "NEW_GROUP_" + System.currentTimeMillis();
randomNm = randomNm.substring(0, 20);
@ -553,7 +545,7 @@ public class ComnCodeControllerTest extends BaseTest {
@DisplayName("모든 그룹 조회")
@Test
@Transactional
public void getAllGroup() throws Exception{
public void getAllGroup() throws Exception {
String randomNm = "NEW_GROUP_" + System.currentTimeMillis();
randomNm = randomNm.substring(0, 20);

92
build.gradle

@ -15,65 +15,59 @@ buildscript {
allprojects {
group = "kr.co.palnet"
version = "1.0.0"
}
subprojects {
apply plugin: "java"
apply plugin: "java-library"
apply plugin: boot
apply plugin: "io.spring.dependency-management"
apply plugin: "idea"
["app", "data", "web", "common"].each {
def rootDirName = it;
def subProjectDir = new File(projectDir, it)
subProjectDir.eachDir { dir ->
def projectName = ":${it}:${dir.name}"
project(projectName) {
repositories {
mavenCentral()
}
plugins.apply("java")
plugins.apply("java-library")
plugins.apply(boot)
plugins.apply("io.spring.dependency-management")
plugins.apply("idea")
configurations {
developmentOnly
runtimeClasspath {
extendsFrom developmentOnly
}
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
developmentOnly("$boot:spring-boot-devtools")
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.15.3'
configurations {
developmentOnly
runtimeClasspath {
extendsFrom developmentOnly
}
compileOnly {
extendsFrom annotationProcessor
}
}
compileOnly lombok
testCompileOnly lombok
annotationProcessor lombok
testAnnotationProcessor lombok
dependencies {
developmentOnly("$boot:spring-boot-devtools")
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.15.3'
testImplementation "$boot:spring-boot-starter-test"
}
compileOnly lombok
testCompileOnly lombok
annotationProcessor lombok
testAnnotationProcessor lombok
test {
useJUnitPlatform()
}
}
testImplementation "$boot:spring-boot-starter-test"
}
["data", "web", "common"].each {
def subProjectDir = new File(projectDir, it)
subProjectDir.eachDir {dir->
def projectName = ":${it}-${dir.name}"
project(projectName){
bootJar.enabled(false)
jar.enabled(true)
}
}
}
["app"].each {
def subProjectDir = new File(projectDir, it)
subProjectDir.eachDir {dir->
def projectName = ":${it}-${dir.name}"
project(projectName){
bootJar.enabled(true)
jar.enabled(false)
test {
useJUnitPlatform()
}
if (rootDirName == 'app') {
bootJar.enabled(true)
jar.enabled(false)
} else {
bootJar.enabled(false)
jar.enabled(true)
}
}
}
}

12
common/config-db/build.gradle

@ -0,0 +1,12 @@
dependencies {
// jpa
implementation "$boot:spring-boot-starter-data-jpa"
// querydsl
implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta"
runtimeOnly "com.mysql:mysql-connector-j"
implementation "org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:1.16"
}

2
app/kac-app/src/main/java/kr/co/palnet/kac/app/config/KacJpaConfig.java → common/config-db/src/main/java/kr/co/palnet/kac/config/db/KacJpaConfig.java

@ -1,4 +1,4 @@
package kr.co.palnet.kac.app.config;
package kr.co.palnet.kac.config.db;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings;

2
app/kac-app/src/main/java/kr/co/palnet/kac/app/config/QueryDslConfig.java → common/config-db/src/main/java/kr/co/palnet/kac/config/db/QueryDslConfig.java

@ -1,4 +1,4 @@
package kr.co.palnet.kac.app.config;
package kr.co.palnet.kac.config.db;
import com.querydsl.jpa.impl.JPAQueryFactory;
import jakarta.persistence.EntityManager;

5
app/kac-app/src/main/resources/application-database.yml → common/config-db/src/main/resources/application-db.yml

@ -1,4 +1,9 @@
spring:
jpa:
hibernate:
ddl-auto: none
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
datasource:
pav-kac:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy

5
data/cns/build.gradle

@ -7,9 +7,8 @@ dependencies {
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
testRuntimeOnly("com.h2database:h2")
implementation project(":common:config-db")
testRuntimeOnly "com.h2database:h2"
}
def querydslDir = layout.buildDirectory.dir("generated/querydsl").get().asFile

5
data/com/build.gradle

@ -7,9 +7,8 @@ dependencies {
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
testRuntimeOnly("com.h2database:h2")
implementation project(":common:config-db")
testRuntimeOnly "com.h2database:h2"
}
def querydslDir = layout.buildDirectory.dir("generated/querydsl").get().asFile

5
data/ctr/build.gradle

@ -7,9 +7,8 @@ dependencies {
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
testRuntimeOnly("com.h2database:h2")
implementation project(":common:config-db")
testRuntimeOnly "com.h2database:h2"
}
def querydslDir = layout.buildDirectory.dir("generated/querydsl").get().asFile

5
data/flt/build.gradle

@ -7,9 +7,8 @@ dependencies {
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
testRuntimeOnly("com.h2database:h2")
implementation project(":common:config-db")
testRuntimeOnly "com.h2database:h2"
}
def querydslDir = layout.buildDirectory.dir("generated/querydsl").get().asFile

5
data/other/build.gradle

@ -7,9 +7,8 @@ dependencies {
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
testRuntimeOnly("com.h2database:h2")
implementation project(":common:config-db")
testRuntimeOnly "com.h2database:h2"
}
def querydslDir = layout.buildDirectory.dir("generated/querydsl").get().asFile

5
data/pty/build.gradle

@ -7,9 +7,8 @@ dependencies {
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
testRuntimeOnly("com.h2database:h2")
implementation project(":common:config-db")
testRuntimeOnly "com.h2database:h2"
}
def querydslDir = layout.buildDirectory.dir("generated/querydsl").get().asFile

5
settings.gradle

@ -34,9 +34,10 @@ def baseDir = "kr/co/palnet/kac"
}
}
def projectName = ":${it}-${subDir.name}";
def projectName = ":${it}:${subDir.name}";
include projectName
project(projectName).projectDir = subDir
}
}

10
web/api-common/build.gradle

@ -2,12 +2,12 @@
dependencies {
implementation("$boot:spring-boot-starter-web")
implementation "$boot:spring-boot-starter-data-jpa"
implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta"
implementation project(path: ':common-core')
// for paging
// implementation("org.springframework.data:spring-data-commons")
compileOnly 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
implementation project(":data-com")
implementation project(":common-core")
implementation project(":data:com")
implementation project(":common:core")
}

4
web/security/build.gradle

@ -8,7 +8,7 @@ dependencies {
implementation "$boot:spring-boot-starter-data-jpa"
implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta"
implementation project(":common-util")
implementation project(":data-pty")
implementation project(":common:util")
implementation project(":data:pty")
}

Loading…
Cancel
Save