-
[JAVA] lombok의 @Superbuilder
lombok을 사용하면서 객체 생성을 할 때 builder 패턴을 많이 사용한다. 아무래도 setOOO()도 안하고 @Builder선언 하나로 간단하게 사용이 가능해서 더 편하게 쓴다. 이런 @Builder가 상속관계에서는 원하는대로 작동하지 않는다. 자식 객체에서 builder()로 객체를 빌드할 때 부모의 필드는 사용 할 수가 없다. 바로 IDE에서 컴파일 오류로 판단해서 보여준다. 그럴 때 사용하는게 @SuperBudiler다.(lombok v1.18.2부터) @SuperBudiler는 자식이 부모의 필드까지 빌더 패턴으로 사용하게 해준다. @SuperBudiler 어노테이션을 보면 이렇게 설명되... Read More
-
[SPRING] Asciidoctor 빌드 오류(asGemPath())
오류 In plugin 'org.asciidoctor.convert' type 'org.asciidoctor.gradle.AsciidoctorTask' method 'asGemPath()' should not be annotated with: @Optional, @InputDirectory. 잘 사용하던 spring-rest-docs에서 갑자기 오류가 발생했다. asGemPath()에 문제가 있다면서 안된다. 확인을 해보니 스니펫에 adoc파일들은 만들어지는데 html이 안만들어졌다. 원인 gradle 버전이 변경되면서 발생한 오류다. 최근 gradle6에서 7로 버전을 올렸는데 버전을 올리자마자 ... Read More
-
[Gradle] fianlizedBy, dependsOn 이용해서 task 자동 실행시키기
gradle task를 작성하다보면 특정 task 이 후 다른 task를 실행시키거나 task를 실행하기 전에 특정 task 실행시킬 필요가 있다. 예를들면, ‘bootWar를 실행하기전에 반드시 test를 수행한다. test가 성공해야만 bootWar를 수행한다.’ 등이 있을 듯 하다. 이런 task의 관계를 finalizedBy, dependsOn 을 이용해 제어 할 수 있다. (gradle 6.9(groovy) 버전 기준입니다.) finalizedBy task 이 후 실행시킬 task를 설정해준다. 단, 해당 task의 성공/실패 여부와 상관없이 실행시킨다. TaskA.finalizedBy('Ta... Read More
-
[SPRING] Spring rest docs에서 원하는 필드만 문서화하기
테스트코드를 작성하고 Spring rest docs를 만들 때 사용되는 body의 필드, path parameter, query parameter를 모두 명시해주어야 오류없이 정상적으로 실행이 되고 문서가 만들어진다. 없으면 바로 오류가 나온다. 명시 안된 부분에 대해서 명시하라고 한다. org.springframework.restdocs.snippet.SnippetException: The following parts of the payload were not documented: { "code" : "code-01", "message" : "THIS IS TEST" } 정확한 문서를 위해 ... Read More
-
[Gradle] gradle dependency report 보기
Gradle Report 가끔 의존성을 설정하지않은 라이브러리가 보일때도 있고 버전이 여러개로 나오는 경우도 있다. 특정 상위패키지로 인해 자동으로 들어온건데, 그 경로를 추적해서 찾기가 생각보다 힘들다. gradle에서 지원하는 task 중 dependencies를 보여주는 것도 있지만 텍스트형태의 트리구조라 깔끔하지는 않다. 그런 이유로 gradle에서 플러그인으로 reporting 기능을 지원해준다. Plugin 설정 build.gradle에 플러그인을 입력해주면 된다. (gradle 6.9 기준) plugins { id 'project-report' } Reporting 플러그인을 ... Read More