inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

memberUpdateDto가 필요한 이유

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

강의도중에 설명해주시긴 했는데 그래도 이해가 덜 가서 질문드립니다 membersaveDto만있으면 memberupdatedto를 만들지 않아도돼요 둘다 만들게 되면 코드의 중복이 발생하는것아닌가요? save와 update는 아예다른것이기때문에 중복이 발생해도 상관이 없는걸까요? 아예다른것이라기엔 update에도 있고 save에도 있는 필드에 변화가 생겼을때 둘다 수정을 해주어야해요 그럼 수정해야할 포인트가 늘어나는건데도 updateDto를 생성해주는게 맞는걸까요?

  • spring
  • JPA
  • java
  • spring-boot
김민지 댓글 2 좋아요 0 조회수 512

실제 개발 시 테스트 서버/DB 구성 방식 문의

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 강의에서는 개발과 테스트 코드가 모두 동일한 h2 DB 기반으로 구현이 되는데 실무에서는 테스트 코드에 대한 DB 연결을 어떤식으로 하게되는지 궁금합니다. 예를 들어 실제 개발은 A 서버의 mysql 을 사용하고 테스트는 로컬의 h2 로 별도로 연결을 하는지, 아니면 동일한 서버(환경)에서 테스트용 테이블들만 별도로 만들어서 하는지, 또는 모든 환경을 동일하게 하고 테스트 코드만 인메모리에서 실행되게 하는지, 실제 개발 시에는 테스트 코드에 대한 서버, DB 구성 방법이 궁금합니다.

  • JPA
  • java
  • spring
  • 웹앱
  • spring-boot
파란하늘 댓글 1 좋아요 1 조회수 518

유효성 검증 위치 관련 질문

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요. 로드맵 수강하고 토이 프로젝트 진행 중인데 궁금한 점이 계속 나오네요.. 일반적으로 사용하는 표현 - 비즈니스 - 도메인 계층 구조에서 비즈니스 정책을 검증하는 위치와 관련해서 질문 드립니다. 예를 들어 사용자용 게시글 삭제 API는 현재 요청 사용자가 게시글의 작성자가 맞는지 검사합니다. 이 검증 작업을 서비스 계층에서 처리했습니다. public class PostService { private final PostRepository postRepository; // 게시글 삭제 기능 public void deletePost(Long postId, Long currentMemberId) { // 엔티티 조회 후 게시글 작성자가 현재 요청 사용자( currentMemberId )와 일치하는지 검사 Post post = postRepository.findById(postId); if (!post.getWriter().getId().equals(currentMemberId)) { // 작성자가 아니면 예외 발생 } post.delete(); } } 이 메서드를 사용자 API 컨트롤러에서는 잘 사용했는데, 관리자 API는 게시글 작성자 검증이 필요 없다 는게 문제였습니다. 사용자 및 관리자용 API 컨트롤러에서 호출하는 것은 결국 '게시글 삭제'라는 동일한 기능이므로 하나의 서비스 클래스에서 제공하는 게 맞다 판단하여 deletePost() 메서드에서 수행하던 유효성 검증 로직을 사용자 API 컨트롤러로 이관했습니다. public class PostController { private final PostService postService; // 실제 코드는 아니며 설명용 코드입니다. // 예를 들어 currentMemberId의 경우 실제론 @AuthenticationPrincipal 등을 통해 얻습니다. @DeleteMapping("/{postId}") public void delete(Long currentMemberId, @PathVariable Long postId) { Post post = postService.findPost(postId); if (!post.getWriter().getId().equals(currentMemberId)) { // 작성자가 아니면 예외 발생 } postService.deletePost(postId); } } 이렇게 구성하니 PostService 를 사용자 API 컨트롤러에서도, 관리자 API 컨트롤러에서도 사용 가능했지만.. 표현 계층에서 비즈니스 정책을 검증하니 구조가 이상한 것 같아서 질문 드립니다. '게시글을 삭제하려는 사용자가 게시글의 작성자인가?' 를 확인하는 작업은 비즈니스 정책에 의한 작업이라 생각합니다. 그러므로 서비스 계층에서 검사하는 게 맞다 생각되는데, 관리자 API에서 사용하기 불편하더라구요. 이런 경우 구조를 어떻게 가져가시나요? PostService 는 비즈니스 로직만 처리하고, PostUserService 같은 래퍼 서비스를 만들어 검증 부분을 처리할까 했는데, 썩.. 맘에 들진 않았습니다. 예시처럼 정책 검증을 컨트롤러에서 수행한다 가정하면, 제 코드의 경우 PostService.findPost() 메서드에 @Transactional(readOnly=true) 를 적용한 상태라 deletePost() 메서드에서 SELECT 쿼리를 또 실행합니다. @Transactional(readOnly=true) 은 정말 필요한 곳에만 선택적으로 적용하시나요? 아니면 읽기 전용 메서드는 별도로 구분하시나요? '서비스는 최대한 비즈니스 로직만 수행하고, 정책 유효성 검증은 다른 위치에서 진행하는 것이 좋다'라는 분들도 있던데, 보통 어떤 식으로 처리하시나요?

  • 웹앱
  • JPA
  • spring-boot
  • spring
  • java
InJun Choi 댓글 1 좋아요 2 조회수 566

v5는 많은 것이 바뀌어서 test해보려는데 왜 Tasklet에 있는 System.out.println는 실행되지 않을까요??

미해결

스프링 배치

v5로 test해보려는데 왜 Tasklet의 System.out.println는 찍히지 않는 걸까요?? package me.victorsung.demobatch; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.configuration.support.DefaultBatchConfiguration; import org.springframework.batch.core.job.builder.JobBuilder; import org.springframework.batch.core.repository.JobRepository; import org.springframework.batch.core.scope.context.ChunkContext; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.core.step.tasklet.Tasklet; import org.springframework.batch.repeat.RepeatStatus; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.PlatformTransactionManager; @Configuration public class HelloJobConfiguration extends DefaultBatchConfiguration { @Bean public Job myJob(JobRepository jobRepository, Step myStep1, Step myStep2) { System.out.println("this is job"); return new JobBuilder("myJob", jobRepository) .start(myStep1) .next(myStep2) .build(); } @Bean public Step myStep1(JobRepository jobRepository, Tasklet myTasklet1, PlatformTransactionManager transactionManager) { System.out.println("this is step1"); return new StepBuilder("myStep1", jobRepository) .tasklet(myTasklet1, transactionManager) .build(); } @Bean public Step myStep2(JobRepository jobRepository, Tasklet myTasklet2, PlatformTransactionManager transactionManager) { System.out.println("this is step2"); return new StepBuilder("myStep2", jobRepository) .tasklet(myTasklet2, transactionManager) .build(); } @Bean public Tasklet myTasklet1() { System.out.println( """ this is myTasklet1 """ ); // Step에서는 Tasklet을 무한 반복 시킨다. 그래서 RepeatStatus을 null || RepeatStatus.FINISHED로 주어야 한번 실행하고 끝난다. return new Tasklet() { @Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { System.out.println( """ myTasklet1 ============================================== >> contribution = %s >> chunkContext = %s ============================================== """.formatted(contribution, chunkContext) ); return RepeatStatus.FINISHED; } }; } @Bean public Tasklet myTasklet2() { System.out.println("this is taskLet2"); // Step에서는 Tasklet을 무한 반복 시킨다. 그래서 RepeatStatus을 null || RepeatStatus.FINISHED로 주어야 한번 실행하고 끝난다. return (contribution, chunkContext) -> { System.out.println("test2"); System.out.println( """ myTasklet2 ============================================== >> contribution = %s >> chunkContext = %s ============================================== """.formatted(contribution, chunkContext) ); return RepeatStatus.FINISHED; }; } } . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.0.0) 2022-12-06T11:11:34.542+09:00 INFO 87250 --- [ main] m.v.demobatch.DemoBatchApplication : Starting DemoBatchApplication using Java 17.0.4.1 with PID 87250 (/Users/victor/Documents/thecommerce/demo-batch/out/production/classes started by victor in /Users/victor/Documents/thecommerce/demo-batch) 2022-12-06T11:11:34.544+09:00 INFO 87250 --- [ main] m.v.demobatch.DemoBatchApplication : No active profile set, falling back to 1 default profile: "default" 2022-12-06T11:11:34.671+09:00 INFO 87250 --- [ main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobRepository already defined in the application context, skipping the registration of a jobRepository 2022-12-06T11:11:34.671+09:00 INFO 87250 --- [ main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobExplorer already defined in the application context, skipping the registration of a jobExplorer 2022-12-06T11:11:34.671+09:00 INFO 87250 --- [ main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobLauncher already defined in the application context, skipping the registration of a jobLauncher 2022-12-06T11:11:34.671+09:00 INFO 87250 --- [ main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobRegistry already defined in the application context, skipping the registration of a jobRegistry 2022-12-06T11:11:34.671+09:00 INFO 87250 --- [ main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobOperator already defined in the application context, skipping the registration of a jobOperator 2022-12-06T11:11:34.671+09:00 INFO 87250 --- [ main] o.s.b.c.c.annotation.BatchRegistrar : Finished Spring Batch infrastructure beans configuration in 0 ms. 2022-12-06T11:11:34.784+09:00 WARN 87250 --- [ main] ocalVariableTableParameterNameDiscoverer : Using deprecated '-debug' fallback for parameter name resolution. Compile the affected code with '-parameters' instead or avoid its introspection: me.victorsung.demobatch.HelloJobConfiguration 2022-12-06T11:11:34.811+09:00 INFO 87250 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2022-12-06T11:11:34.891+09:00 INFO 87250 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection conn0: url=jdbc:h2:mem:06a2d6ef-e350-45b8-8468-33c43eb10333 user=SA 2022-12-06T11:11:34.891+09:00 INFO 87250 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. this is myTasklet1 this is step1 2022-12-06T11:11:34.922+09:00 INFO 87250 --- [ main] .c.a.BatchObservabilityBeanPostProcessor : No Micrometer observation registry found, defaulting to ObservationRegistry.NOOP this is taskLet2 this is step2 2022-12-06T11:11:34.923+09:00 INFO 87250 --- [ main] .c.a.BatchObservabilityBeanPostProcessor : No Micrometer observation registry found, defaulting to ObservationRegistry.NOOP this is job 2022-12-06T11:11:34.925+09:00 INFO 87250 --- [ main] .c.a.BatchObservabilityBeanPostProcessor : No Micrometer observation registry found, defaulting to ObservationRegistry.NOOP 2022-12-06T11:11:34.985+09:00 INFO 87250 --- [ main] m.v.demobatch.DemoBatchApplication : Started DemoBatchApplication in 0.659 seconds (process running for 0.901) 2022-12-06T11:11:34.988+09:00 INFO 87250 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2022-12-06T11:11:34.990+09:00 INFO 87250 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. Process finished with exit code 0

  • spring-boot
  • spring-batch
edu3 댓글 1 좋아요 1 조회수 3413

빌드하고 실행하기 gradlew build 에러 ㅠㅠ

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. intelllij환경설정 전부 이상없이 설정하였고, 자바 11사용중인데 cmd 창에서 빌드하려니 계속 아래와 같은 에러가 뜹니다 ㅠㅠ 어떻게 해결할 수 있을까요?? Task :test FAILED Error: Could not find or load main class worker.org .gradle.process.internal.worker.GradleWorkerMain Caused by: java.lang.ClassNotFoundException: worker.org .gradle.process.internal.worker.GradleWorkerMain FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':test'. > Process 'Gradle Test Executor 3' finished with non-zero exit value 1 * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 3s 7 actionable tasks: 1 executed, 6 up-to-date

  • MVC
  • spring
  • java
  • spring-boot
채승민 댓글 5 좋아요 0 조회수 5620

43:07 skip 질문입니다.

미해결

스프링 배치

ItemWriter에서 '12' 아이템이 예외가 터져서 Skip처리 되고, 다시 ItemReader 부터 재실행 되는 것은 이해했습니다. 근데 ItemProcessor에서 '6'과 '7' 을 Skip처리한 거처럼 ItemWriter역시 마찬가지로 ExecutionContext에 '12' 아이템이 저장되므로 ItemProcessor와 ItemWriter에서 '12' 아이템은 Skip 해야 되지 않나요? 그러면 출력값에 6, -6과 7, -7이 안뜬거 처럼 12, -12는 안떠야 된다고 생각합니다.

  • spring-boot
  • spring-batch
김나다 댓글 1 좋아요 0 조회수 463

findAll 메서드의 리턴값

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

보통은 새로 생성자를 만들어서 리턴값에 return store; 이런식으로 사용했었는데 따로 생성자를 만들지 않고 new ArrayList<>(store.values()) 라고 사용해도 위와 같이 그대로 리턴이 되는건가요? ArrayList의 타입은 따로 설정해주지 않아도 store 자체가 Map 형태를 가지고 있어서 알아서 Long,Member의 형태로 ArrayList가 생성이 되는건가요?

  • spring-boot
  • MVC
  • java
  • spring
ㅇㅇㅇㅇㅇㅇ 댓글 1 좋아요 0 조회수 512

java.lang.NoClassDefFoundError: javax/persistence/Transient 에러

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

안녕하세요! 아래 코드 추가 후에 api를 요청하면 java.lang.NoClassDefFoundError: javax/persistence/Transient 에러가 뜨더라고요. @Bean Hibernate5Module hibernate5Module() { return new Hibernate5Module(); } 그래서 뭐가 문제인지 확인해봤는데요. 아마도 버전 이슈인 것으로 생각이 되어서 질문을 드립니다. 저는 지금 spring boot 3버전으로 실습을 따라가고 있고, 확인해보니까 spring boot 3버전에는 hibernate 6이 쓰이고 있더라고요... jackson-datatype-hibernate 라이브러리는 아직은 hibernate 5까지만 지원하는 것 같은데... 혹시 jackson-datatype-hibernate 를 대체할 수 있으면서 spring boot 3 에서 돌아가는 라이브러리가 있을까요??? 아니면 라이브러리를 사용하지 않고, hibernate5module의 역할을 구현할 수 있을까요?

  • spring
  • JPA
  • java
  • spring-boot
댓글 4 좋아요 4 조회수 3460

4:17 dto없이 entity

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

4:17 @GetMapping("items/{itemId}/edit") public String updateItemForm(@PathVariable("itemId")Long itemId,Model model) { Book item = (Book) itemService.findOne(itemId); BookForm form = new BookForm(); form.setId(item.getId()); form.setIsbn(item.getIsbn()); form.setPrice(item.getPrice()); form.setStockQuantity(item.getStockQuantity()); form.setName(item.getName()); form.setAuthor(item.getAuthor()); model.addAttribute("form", form); return "items/updateItemForm"; 여기에서 Book item = (Book) itemService.findOne(itemId); BookForm form = new BookForm(); form.setId(item.getId()); form.setIsbn(item.getIsbn()); form.setPrice(item.getPrice()); form.setStockQuantity(item.getStockQuantity()); form.setName(item.getName()); form.setAuthor(item.getAuthor()); 이 부분은 엔티티를 dto화 시켜주는거와 원리 같은건가요? 만약 @GetMapping("items/{itemId}/edit") private String updateItemForm(@PathVariable Long itemId,Model model){ Item item = itemService.findOne(itemId); model.addAttribute("form",item); return "items/updateItemForm"; } 이런식으로 entity를 바로 form으로 넘겨주게 되면 문제가 있을까요?

  • 웹앱
  • spring-boot
  • JPA
  • spring
  • java
omimabi77 댓글 1 좋아요 0 조회수 714

야생형 학습에 대한 안내가 수강전 답변과 mvc1편에서의 답변이 달라서요!

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

야생형수강 순서 -> 관련 답변은 이런데 ---- 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 스프링 핵심 원리 - 기본편 현재 강의 모든 개발자를 위한 HTTP 웹 기본 지식 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 그리고 다음 순서로 듣습니다. 1. 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발(빠르게 영상을 보면서 코드만 따라하기) 2. 자바 ORM 표준 JPA 프로그래밍 - 기본편 3. 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발(진지하게 복습) 4. 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 여기까지 진행하면 토이프로젝트를 진행하실 수 있을거에요. 그리고 이후에 다음 내용을 들이시면 됩니다. 5. 실전! 스프링 데이터 JPA 6. 실전! Querydsl +db 접근 강의 출시 전 답변이였고, db강의관련 순서는 mv2 다음에 2개 들으라고 적혀있었구요 또 다른 답변에요! mvc 1편 강의마무리에서 야생형을 소개할때는 추천 학습 방법 스프링 입문과 스프링 핵심 원리를 듣고 나면 스프링으로 개발하는 가장 중요한 기본 지식을 쌓은 상태가 됩니다. 그래서 바로 스프링 부트와 JPA 실무 완전 정복 로드맵에 들어가는 것도 좋은 선택입니다. 스프링을 실무에서 어떤 식으로 활용해서 개발하는지 먼저 배워두고, 이후에 스프링 완전정복 로드맵를 통해 스프링 MVC나 스프링 데이터 접근 기술 같은 부분은 더 깊이있게 학습하시면 됩니다. 라고 하셔서요! 문서에도 그래서 저는 입문,기본,http 요청,mvc1편 다 듣고-> 실전해보고 나서 되돌아오려고 실전편 1먼저 듣고 있는데 궁금해져서 물어봅니다 뭐가 맞는건지.. 답변과 강의에서의 안내가 달라서 여쭤봅니다

  • java
  • spring-boot
  • spring
  • JPA
  • 웹앱
Backstudy2 댓글 1 좋아요 0 조회수 654

스프링 부트 스타터 설정

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= '실전! 스프링 부트와 JPA 활용1' 강의를 수강하기 위해 스프링 부트 스타터에서 프로젝트를 생성하려고 합니다. 그런데 Project에서 gradle을 선택하려고 하는데 gradle-groovy와 gradle-kotlin 이렇게 나뉘어지는데 무얼 선택해야 하나요?

  • spring
  • 웹앱
  • java
  • spring-boot
  • JPA
치즈볼 댓글 1 좋아요 0 조회수 1118

데이터 뻥튀기와 관련하여 질문이 있습니다.

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

join을 해서 가지고 오면 이렇게 데이터가 중복이 되면서 2개로 뻥튀기가 된다고 설명을 해주셨는데요. 윗줄과 아랫줄이 완전히 동일한 것은 아닌데 이것을 왜 중복으로 보고 뻥튀기라 하는지 이해가 잘 가지 않습니다! 제가 나름 이해하기로는 예를 들어 위에 예시로 든 Order가 OrderA 라고 했을 때, 지금 찾고 싶은건 OrderA 라는 Order 하나인데 그 안에 OrderItem이 각각 서로 다른게 2개 들어있어서 OrderA-Boo1 , OrderA-Book2 이렇게 OrderA가 두 개가 조회돼서 뻥튀기라고 보는걸까요? 그런데 이러면 완전히 중복은 아닌거 같기도 하고.. 어떻게 이해하는 것이 좋을지 궁금합니다!

  • JPA
  • java
  • spring
  • spring-boot
비가싫어요 댓글 1 좋아요 0 조회수 858

Address를 분리하는 이유

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

@Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String name; @Embedded private Address address; @OneToMany(mappedBy = "member") private List<Order> orders = new ArrayList<>(); // Best Practice } @Getter @Setter public class MemberForm { @NotEmpty(message = "회원 이름은 필수 입니다.") private String name; private String city; private String street; private String zipcode; } @GetMapping("/members/new") public String createForm(Model model) { model.addAttribute("memberForm", new MemberForm()); return "members/createMemberForm"; } @PostMapping("/members/new") public String create(@Valid MemberForm form, BindingResult result) { if (result.hasErrors()) { return "members/createMemberForm"; } Address address = new Address(form.getCity(), form.getStreet(), form.getZipcode()); Member member = new Member(); member.setName(form.getName()); member.setAddress(address); memberService.join(member); return "redirect:/home"; } [1번째 코드블럭] Address를 따로 분리하면, [2번째 코드블럭] MemberForm을 만들어야만 하고, [3번째 코드블럭] createMemberForm.html 에 보낼 때 MemberForm객체를 보내어, [4번째 코드블럭]사용자에게 입력받은 정보를 다시 MemberForm에 담아 가져온 후, 값을 하나씩 꺼내어 Member객체에 담아 join 시키는데, 저의 관점에서는 이점이 보이지 않는다고 생각이 듭니다. [질문1] Address를 따로 객체로 만들어서 빼 둔 이유가 궁금합니다. [질문2] 그렇게 따로 분리한데는 그에 따른 이득이 있을텐데, 그 경우도 궁금하구요. [질문3] 주소정보(3개-city,street,zipcode)가 아닌 훨씬 많은 경우엔 더 편해지나요? 그런 예시가 딱 떠오르지가 않아서 혹시 실무에서의 예시가 있으시면 알려주세요. [질문4] 추가적으로 계좌정보 (은행, 계좌번호, 예금주)를 입력받아 MEMBER를 만들 경우에 Address를 만든 것 처럼 동일하게 만들면 되나요?

  • spring-boot
  • spring
  • 웹앱
  • JPA
  • java
성보 댓글 1 좋아요 0 조회수 421

java.lang.ClassNotFoundException: javax.persistence.Entity 오류 질문입니다.

미해결

실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

안녕하세요! 강의를 완강하고 혼자서 새롭게 프로젝트를 진행해보려고 하다가 오류를 만나서 질문드립니다. https://start.spring.io/ 를 통해 프로젝트를 만들었고 설정값들은 다음과 같습니다. Project: Gradle-Groovy Language: Kotlin Spring Boot: 3.0.0 Packaging: Jar Java: 17 위와 같이 설정하고 build.gradle.kts 파일을 아래와 같이 설정해줬습니다. import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("org.springframework.boot") version "3.0.0" id("io.spring.dependency-management") version "1.1.0" kotlin("jvm") version "1.7.21" kotlin("plugin.spring") version "1.7.21" kotlin("plugin.jpa") version "1.7.21" kotlin("kapt") version "1.7.10" } group = "boilerplate" version = "0.0.1-SNAPSHOT" java.sourceCompatibility = JavaVersion.VERSION_17 repositories { mavenCentral() } dependencies { implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("org.springframework.boot:spring-boot-starter-validation") implementation("org.springframework.boot:spring-boot-starter-web") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") implementation("com.querydsl:querydsl-jpa:5.0.0") kapt("com.querydsl:querydsl-apt:5.0.0:jpa") runtimeOnly("org.postgresql:postgresql") testImplementation("org.springframework.boot:spring-boot-starter-test") } tasks.withType<KotlinCompile> { kotlinOptions { freeCompilerArgs = listOf("-Xjsr305=strict") jvmTarget = "17" } } tasks.withType<Test> { useJUnitPlatform() } kotlin("kapt") version "1.7.10" implementation("com.querydsl:querydsl-jpa:5.0.0") kapt("com.querydsl:querydsl-apt:5.0.0:jpa") 다른 라인들은 생성그대로이고 위 라인들만 Querydsl을 사용하기 위해 추가해줬습니다. 이 상태에서 엔티티를 하나 생성해줬는데요. package boilerplate.sample.domain import jakarta.persistence.Entity import jakarta.persistence.GeneratedValue import jakarta.persistence.GenerationType import jakarta.persistence.Id @Entity class UserEntity( private val password: String, @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) private val id: Long? = null, ) { } 위처럼 javax.persistence가 아닌 jakarta.persistence에서 import 해오더라구요. 좀 찾아보니 이 부분은 javax에서 jakarta로 바뀌었다고 합니다. 여기서 빌드를 진행해보니 > Task :kaptKotlin FAILED FAILURE: Build completed with 2 failures. 1: Task failed with an exception. ----------- * What went wrong: Execution failed for task ':kaptKotlin'. > A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction > java.lang.reflect.InvocationTargetException (no error message) * Try: > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':kaptKotlin'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:142) at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:140) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:128) at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77) at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52) at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:69) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:327) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:314) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:307) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:293) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:420) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:342) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:339) Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction at org.gradle.internal.work.DefaultAsyncWorkTracker.lambda$waitForItemsAndGatherFailures$2(DefaultAsyncWorkTracker.java:130) at org.gradle.internal.Factories$1.create(Factories.java:31) at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:321) at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:304) at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLock(DefaultWorkerLeaseService.java:309) at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:126) at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:92) at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForAll(DefaultAsyncWorkTracker.java:78) at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForCompletion(DefaultAsyncWorkTracker.java:66) at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:244) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68) at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:221) at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:204) at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:187) at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:165) at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:89) at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:40) at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:53) at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:50) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:40) at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68) at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38) at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41) at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74) at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55) at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51) at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29) at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.executeDelegateBroadcastingChanges(CaptureStateAfterExecutionStep.java:124) at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:80) at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:58) at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48) at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36) at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:181) at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:71) at org.gradle.internal.Either$Right.fold(Either.java:175) at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59) at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:69) at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:47) at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36) at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25) at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36) at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22) at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:110) at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:56) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:56) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38) at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:73) at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27) at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:89) at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:50) at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:114) at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:57) at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:76) at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:50) at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNoEmptySources(SkipEmptyWorkStep.java:254) at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:91) at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:56) at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32) at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38) at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:43) at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31) at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40) at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:281) at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40) at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30) at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37) at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27) at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44) at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33) at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:139) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:128) at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77) at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52) at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:69) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:327) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:314) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:307) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:293) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:420) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:342) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) Caused by: java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) Caused by: java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at org.jetbrains.kotlin.gradle.internal.KaptExecution.run(KaptWithoutKotlincTask.kt:316) at org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction.execute(KaptWithoutKotlincTask.kt:262) at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63) at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66) at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62) at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100) at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62) at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44) at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73) at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41) at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59) at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:205) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:187) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:120) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:162) at org.gradle.internal.Factories$1.create(Factories.java:31) at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:249) at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:109) at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:114) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:157) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:126) ... 2 more Caused by: java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:90) at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing$default(annotationProcessing.kt:31) at org.jetbrains.kotlin.kapt3.base.Kapt.kapt(Kapt.kt:47) ... 34 more Caused by: com.sun.tools.javac.processing.AnnotationProcessingError: java.lang.NoClassDefFoundError: javax/persistence/Entity Caused by: com.sun.tools.javac.processing.AnnotationProcessingError: java.lang.NoClassDefFoundError: javax/persistence/Entity at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:1035) at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:939) at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1267) at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1382) at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1234) ... 40 more Caused by: java.lang.NoClassDefFoundError: javax/persistence/Entity Caused by: java.lang.NoClassDefFoundError: javax/persistence/Entity at com.querydsl.apt.jpa.JPAAnnotationProcessor.createConfiguration(JPAAnnotationProcessor.java:37) at com.querydsl.apt.AbstractQuerydslProcessor.process(AbstractQuerydslProcessor.java:82) at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.process(incrementalProcessors.kt:90) at org.jetbrains.kotlin.kapt3.base.ProcessorWrapper.process(annotationProcessing.kt:197) at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:1023) ... 44 more Caused by: java.lang.ClassNotFoundException: javax.persistence.Entity ... 49 more Caused by: java.lang.ClassNotFoundException: javax.persistence.Entity ============================================================================== 2: Task failed with an exception. ----------- * What went wrong: java.lang.StackOverflowError (no error message) * Try: > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Exception is: java.lang.StackOverflowError at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:153) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) at org.gradle.execution.plan.CompositeNodeGroup.isCanCancel(CompositeNodeGroup.java:101) at org.gradle.execution.plan.Node.isCanCancel(Node.java:232) at org.gradle.execution.plan.FinalizerGroup.isCanCancel(FinalizerGroup.java:155) ============================================================================== * Get more help at https://help.gradle.org BUILD FAILED in 355ms 3 actionable tasks: 1 executed, 2 up-to-date 이런 오류가 발생합니다. 에러가 조금 긴데, 잘라서 살펴보니, Caused by: java.lang.ClassNotFoundException: javax.persistence.Entity Caused by: java.lang.NoClassDefFoundError: javax/persistence/Entity 위와 같은 오류들이 발생하는걸 보니 계속 javax.persistence에서 가져오려고 시도하는 것 같습니다. 3시간정도 삽질하다가 계속 동작하지 않아서 질문드립니다. 혹시 어떤걸 수정해줘야할까요?

  • refactoring
  • java
  • spring-boot
  • kotlin
  • spring
Spring2Boot 댓글 6 좋아요 1 조회수 3516

MemberserviceTest fail 에러

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 회원가입만 썼을땐 잘 됬는데 중복 회원 예외 추가하고 나니 회원가입만 실행해도 안되네요. fail() 부분에서 에러가 뜨는데 fail을 try catch 부분의 문법이 아닌 일반 메서드로 인식하는것 같다고 생각이드는데 변경이 안되네요 ㅜㅠ 다른 에러 일수도 있구요 도와주실 수있나요?

  • java
  • spring-boot
  • MVC
  • spring
everback 댓글 2 좋아요 0 조회수 470

DI 의존성 주입 질문

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

안녕하세요 DI 관련해 질문이 있습니다. ```java @Controller public class MemberController { private final MemberService memberService; @Autowired public MemberController(MemberService memberService) { this.memberService = memberService; } } private final MemberService memberService; final 키워드를 붙여주는 이유가 궁금합니다. memberSevice 를 변경하지 못하게 하는 이유가 무엇인가요?

  • di
  • java
  • 의존성
  • MVC
  • spring
  • spring-boot
심야 댓글 1 좋아요 0 조회수 488

test오류

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

테스트 진행 중 오류가 납니다. 구글링해두 해결을 못하겠네요 ㅠㅠ 어쩌다가 테스트 진행이 됐었는데 시퀀스를 계속 삭제해줘야 됐었습니다. H2 1.4.200 버전맞고 다른 소스들 교재랑 같습니다. 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의 듣고 기존에 쓰던 H2에서 database만 추가해서 사용중인데 이게 문제가 될까요? java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@597a7afa testClass = jpabook.jpashop.MemberRepositoryTest, locations = [], classes = [jpabook.jpashop.JpashopApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceLocations = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@9da1, org.springframework.boot.test.autoconfigure.properties .PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@49d904ec, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@3c419631, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@3e2e18f2, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@63355449, org.springframework.boot.test.context.SpringBootTestAnnotation@8c81e9cd], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext( DefaultCacheAwareContextLoaderDelegate.java:141 ) at org.springframework.test.context.support .DefaultTestContext.getApplicationContext( DefaultTestContext.java:127 ) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary( ServletTestExecutionListener.java:192 ) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance( ServletTestExecutionListener.java:131 ) at org.springframework.test.context.TestContextManager.prepareTestInstance( TestContextManager.java:249 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest( SpringJUnit4ClassRunner.java:228 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall( SpringJUnit4ClassRunner.java:290 ) at org.junit.internal.runners.model.ReflectiveCallable.run ( ReflectiveCallable.java:12 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock( SpringJUnit4ClassRunner.java:292 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild( SpringJUnit4ClassRunner.java:247 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild( SpringJUnit4ClassRunner.java:97 ) at org.junit.runners.ParentRunner$4.run( ParentRunner.java:331 ) at org.junit.runners.ParentRunner$1.schedule( ParentRunner.java:79 ) at org.junit.runners.ParentRunner.runChildren( ParentRunner.java:329 ) at org.junit.runners.ParentRunner.access$100( ParentRunner.java:66 ) at org.junit.runners.ParentRunner$2.evaluate( ParentRunner.java:293 ) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate( RunBeforeTestClassCallbacks.java:61 ) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate( RunAfterTestClassCallbacks.java:70 ) at org.junit.runners.ParentRunner$3.evaluate( ParentRunner.java:306 ) at org.junit.runners.ParentRunner.run ( ParentRunner.java:413 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run ( SpringJUnit4ClassRunner.java:191 ) at org.junit.runner.JUnitCore.run ( JUnitCore.java:137 ) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs( JUnit4IdeaTestRunner.java:69 ) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute( IdeaTestRunner.java:38 ) at com.intellij.rt.execution.junit.TestsRepeater.repeat( TestsRepeater.java:11 ) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs( IdeaTestRunner.java:35 ) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart( JUnitStarter.java:235 ) at com.intellij.rt.junit.JUnitStarter.main( JUnitStarter.java:54 ) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not instantiate id generator [entity-name=jpabook.jpashop.Member] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.initializeBean( AbstractAutowireCapableBeanFactory.java:1751 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.doCreateBean( AbstractAutowireCapableBeanFactory.java:599 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.createBean( AbstractAutowireCapableBeanFactory.java:521 ) at org.springframework.beans.factory.support .AbstractBeanFactory.lambda$doGetBean$0( AbstractBeanFactory.java:326 ) at org.springframework.beans.factory.support .DefaultSingletonBeanRegistry.getSingleton( DefaultSingletonBeanRegistry.java:234 ) at org.springframework.beans.factory.support .AbstractBeanFactory.doGetBean( AbstractBeanFactory.java:324 ) at org.springframework.beans.factory.support .AbstractBeanFactory.getBean( AbstractBeanFactory.java:200 ) at org.springframework.context.support .AbstractApplicationContext.getBean( AbstractApplicationContext.java:1130 ) at org.springframework.context.support .AbstractApplicationContext.finishBeanFactoryInitialization( AbstractApplicationContext.java:905 ) at org.springframework.context.support .AbstractApplicationContext.refresh( AbstractApplicationContext.java:584 ) at org.springframework.boot.SpringApplication.refresh( SpringApplication.java:730 ) at org.springframework.boot.SpringApplication.refreshContext( SpringApplication.java:432 ) at org.springframework.boot.SpringApplication.run ( SpringApplication.java:308 ) at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3( SpringBootContextLoader.java:137 ) at org.springframework.util.function.ThrowingSupplier.get( ThrowingSupplier.java:59 ) at org.springframework.util.function.ThrowingSupplier.get( ThrowingSupplier.java:47 ) at org.springframework.boot.SpringApplication.withHook( SpringApplication.java:1386 ) at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run( SpringBootContextLoader.java:543 ) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext( SpringBootContextLoader.java:137 ) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext( SpringBootContextLoader.java:108 ) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal( DefaultCacheAwareContextLoaderDelegate.java:183 ) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext( DefaultCacheAwareContextLoaderDelegate.java:117 ) ... 27 more Caused by: jakarta.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not instantiate id generator [entity-name=jpabook.jpashop.Member] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory( AbstractEntityManagerFactoryBean.java:421 ) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet( AbstractEntityManagerFactoryBean.java:396 ) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet( LocalContainerEntityManagerFactoryBean.java:352 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.invokeInitMethods( AbstractAutowireCapableBeanFactory.java:1797 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.initializeBean( AbstractAutowireCapableBeanFactory.java:1747 ) ... 48 more Caused by: org.hibernate.MappingException: Could not instantiate id generator [entity-name=jpabook.jpashop.Member] at org.hibernate.id .factory.internal.StandardIdentifierGeneratorFactory.createIdentifierGenerator( StandardIdentifierGeneratorFactory.java:222 ) at org.hibernate.mapping.SimpleValue.createIdentifierGenerator( SimpleValue.java:515 ) at org.hibernate.mapping.SimpleValue.createIdentifierGenerator( SimpleValue.java:372 ) at org.hibernate.internal.SessionFactoryImpl.lambda$new$1( SessionFactoryImpl.java:291 ) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept( ForEachOps.java:183 ) at java.base/java.util.stream.ReferencePipeline$2$1.accept( ReferencePipeline.java:179 ) at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining( HashMap.java:1779 ) at java.base/java.util.stream.AbstractPipeline.copyInto( AbstractPipeline.java:509 ) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto( AbstractPipeline.java:499 ) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential( ForEachOps.java:150 ) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential( ForEachOps.java:173 ) at java.base/java.util.stream.AbstractPipeline.evaluate( AbstractPipeline.java:234 ) at java.base/java.util.stream.ReferencePipeline.forEach( ReferencePipeline.java:596 ) at org.hibernate.internal.SessionFactoryImpl.<init>( SessionFactoryImpl.java:290 ) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build ( SessionFactoryBuilderImpl.java:415 ) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build ( EntityManagerFactoryBuilderImpl.java:1425 ) at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory( SpringHibernateJpaPersistenceProvider.java:66 ) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory( LocalContainerEntityManagerFactoryBean.java:376 ) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory( AbstractEntityManagerFactoryBean.java:409 ) ... 52 more Caused by: org.hibernate.HibernateException: Could not fetch the SequenceInformation from the database at org.hibernate.engine.jdbc.env.internal.ExtractedDatabaseMetaDataImpl.sequenceInformationList( ExtractedDatabaseMetaDataImpl.java:302 ) at org.hibernate.engine.jdbc.env.internal.ExtractedDatabaseMetaDataImpl.getSequenceInformationList( ExtractedDatabaseMetaDataImpl.java:151 ) at org.hibernate.id .enhanced.SequenceStyleGenerator.getSequenceIncrementValue( SequenceStyleGenerator.java:561 ) at org.hibernate.id .enhanced.SequenceStyleGenerator.configure( SequenceStyleGenerator.java:210 ) at org.hibernate.id .factory.internal.StandardIdentifierGeneratorFactory.createIdentifierGenerator( StandardIdentifierGeneratorFactory.java:217 ) ... 70 more Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "start_value" not found [42122-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:502 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.message.DbException.get( DbException.java:199 ) at org.h2.jdbc.JdbcResultSet.getColumnIndex( JdbcResultSet.java:3492 ) at org.h2.jdbc.JdbcResultSet.getLong( JdbcResultSet.java:745 ) at com.zaxxer.hikari.pool.HikariProxyResultSet.getLong( HikariProxyResultSet.java ) at org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorLegacyImpl.resultSetStartValueSize( SequenceInformationExtractorLegacyImpl.java:110 ) at org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorLegacyImpl.lambda$extractMetadata$0( SequenceInformationExtractorLegacyImpl.java:54 ) at org.hibernate.tool.schema.extract.spi.ExtractionContext.getQueryResults( ExtractionContext.java:50 ) at org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorLegacyImpl.extractMetadata( SequenceInformationExtractorLegacyImpl.java:39 ) at org.hibernate.engine.jdbc.env.internal.ExtractedDatabaseMetaDataImpl.sequenceInformationList( ExtractedDatabaseMetaDataImpl.java:286 ) ... 74 more

  • JPA
  • spring
  • java
  • spring-boot
  • 웹앱
hyun 댓글 8 좋아요 0 조회수 4386

스프링 데이터 JPA 질문

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

@Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); return new JdbcMemberRepository(dataSource); return new JdbcTemplateMemberRepository(dataSource); return new JpaMemberRepository(em); } 안녕하세요 위 코드를 JPA 사용할 때까지 계속 사용했는데 스프링 데이터 JPA 사용할 때는 왜 주석 처리 하는지 궁금합니다. 좋은 강의 해주셔서 감사합니다.

  • springdatajpa
  • spring-boot
  • MVC
  • spring
  • java
심야 댓글 1 좋아요 0 조회수 496

생성자에서 컬럼을 선언할지, class body 에서 선언할지의 기준이 무엇인지 궁금합니다 :)

미해결

실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

선생님 안녕하세요 :) 14강 잘 보았습니다 ㅎㅎ 생성자에서 컬럼을 선언하는 것 class body 에서 선언하는 것 둘 다 되지만 명확한 기준이 있다면 좋다고 하셨는데요, 이 구체적인 기준이 무엇인지 궁금해요~

  • spring-boot
  • java
  • spring
  • kotlin
  • refactoring
정승원B 댓글 1 좋아요 1 조회수 269

양방향 연관관계에서 관계를 바꿀 때

해결됨

실전! 스프링 데이터 JPA

[질문 내용] 안녕하세요. 예전 부터 궁금했던 내용인데, 혹시 나중에 나오지 않을까 해서 미루다가 결국 질문합니다..! public void changeTeam(Team team){ this.team = team; team.getMembers().add(this); } 예전 강의에서는 양방향 연관 관계에서 주인이 관계를 변경할 때 위처럼 Member Entity는 자신의 필드에 새로운 Team을 세팅하고 Team은 Member를 list에 추가하는 식으로만 마무리했던 것으로 기억합니다. 지나가는 말로 영한님께서 기존 Member와 연관 관계에 있던 Team list에서 Member를 remove하는 작업도 해야 하는데, 연습하는 거니까 빼셨다고 하셨던 것 같습니다. 이 부분이 조금 궁금했습니다. 관계가 바뀌기 이전의 기존 Member의 Team list에서 Member를 지워 주는 부분을 어떤식으로 작성해야 할 지 조금 감이 안 잡힙니다..ㅠㅠ 고려할 사항이 너무나도 많다고 해야 할까요.. public void changeTeam(Team team){ this.team.getMembers().remove(this); this.team = team; team.getMembers().add(this); } 위처럼 단순히 remove()를 사용하기에는 몇 가지 고려할 사항들이 있었습니다. 첫 번째 문제는 remove()의 경우 add와 달리 list의 Member들을 필요로 하는 로직이 들어 있기 때문에 DB로부터 Team의 Member list 정보를 불러온 다음에 동작한다는 점입니다. 특정 로직은 Team의 Members를 사용할 일이 없어 굳이 DB와 Entity그래프를 일치시킬 필요가 없는데, remove()로직이 들어가면서 DB를 조회하는 일이 생긴다는 점입니다. 이로 인한 성능상 문제는 정말 미세하겠지만, 뭔가 조금 걸리는 느낌입니다.. 두 번째는 remove()를 할 때에 eqauls()를 사용한다는 점입니다. 단순히 equals()를 오버라이딩하여 구현하면 될 줄 알았지만, 이 부분도 고려할 부분이 생각 보다 많았습니다. 크게 세 가지로 나뉘는 것 같았습니다. pk를 이용한 equals()오버라이딩 pk와 연관관계 필드를 제외한 필드로 eqauls()를 오버라이딩 Business-Id를 이용한 eqauls()오버라이딩 이렇게 세 가지 사항 정도가 고려되는 것 같았습니다. 각각의 장단점이 있어 보였는데, 3번이 제일 괜찮은 방식으로 보였습니다. 1번은 pk가 GenerateValue방식일 경우 Entity가 persist되기 이전에는 pk를 초기화하지 못 해, set과 같은 Collection을 사용할 때 제한이 생긴다는 점이나 NPE발생 가능성 내재, pk값이 null인 객체가 같은 객체로 인식이 되는 위험, 비영속 상태 객체와 영속 상태 객체의 eqauls연산 시 일치 불가 등이 있는 것 같았습니다. 사실 위의 문제점들이 발생할 만한 로직을 실제 작성하게 될 일이 많지는 않을 것 같지만 뭔가 내재된 위험이 많아 보여 패스했습니다. 2번은 pk와 연관 관계 필드를 제외한 모든 필드들이 합쳐서 Unique한 값을 갖지 못할 경우 중복이 발생하는 문제점이 있어 보였습니다. 3번이 제일 적절해 보였지만 Business-Id로 사용할 만한 데이터가 없을 경우 문제가 있을 것 같았습니다. 특정 글에서는 UUID와 같이 Business-Id를 일부로 두기도 한다는 것 같은데 괜찮은 방식인 지는 모르겠습니다. 내용이 길어졌는데 결론은 양방향 연관 관계에서 관계를 바꿔 줄 때 Entity 그래프를 일치시키기 위해서 어떤 형태로 로직을 작성하는 지 궁금하다는 것입니다. 이렇게 보니 제가 너무 이상한 방식으로 접근한 게 아닌가 생각이 듭니다ㅠㅠ 현업에서는 어떤 식으로 구현하는 지 궁금한데 혼자 공부하다 보니 마땅히 예시를 볼만한 곳이 없어 질문드립니다. 긴 글 읽어 주셔서 감사합니다..! (_ _)

  • java
  • spring-boot
  • spring
  • JPA
공부용 댓글 1 좋아요 0 조회수 477

인기 태그

인프런 TOP Writers

주간 인기글