pom.xml 의 주석 처리된 JUnit 블록을 활성화하고, 버전을 5.10.2 로 고정해 test scope 로 추가하세요.
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.10.2</version>
<scope>test</scope>
</dependency>scope 를 test 로 두면 이 jar 는 배포 fat jar 에 포함되지 않습니다.
java-src/lib 폴더의 jar 하나를 골라 sha256sum 결과를 <jar명>.sha256 파일로 저장한 뒤 스크립트를 다시 실행하세요.
cd java-src/lib
sha256sum mybatis-3.5.19.jar > mybatis-3.5.19.jar.sha256
bash ../extension/21_build_offline/import-jars.sh .해당 jar 만 "OK" 로 표시되고 나머지는 여전히 "미검증"으로 남습니다.
문제 2의 .sha256 파일 내용 앞 글자 하나를 바꾼 뒤 스크립트를 실행하고 종료 코드를 확인하세요.
sed -i '1s/^./f/' mybatis-3.5.19.jar.sha256
bash ../extension/21_build_offline/import-jars.sh .
echo "종료 코드: $?""불일치"로 표시되고 종료 코드가 1 로 끝나는 것을 확인합니다. 확인 후 원래 값으로 되돌립니다.
Spring Boot 프로젝트에서 spring-boot-starter-web 하나만 추가했는데 Tomcat, Jackson 관련 jar 가 함께 딸려 오는 이유를 mvn dependency:tree 출력과 연결지어 설명하세요.
starter-web 자체는 코드가 거의 없고, starter-tomcat·starter-json 같은 하위 starter를 모아 둔 집합 POM입니다. dependency:tree 로 보면 starter-web 아래 이 하위 starter들이 먼저 나열됩니다. 그 아래에 Tomcat 임베디드 서버, Jackson 같은 실제 라이브러리가 다시 나열되어, 전이 의존성이 여러 단계를 거쳐 실제 jar 까지 이어집니다.
이 레슨 폴더의 build.gradle.kts 에서 implementation·runtimeOnly·testImplementation 세 줄을 골라, 각각 Maven pom.xml 의 <dependency> 로 옮겨 쓰세요. scope 값도 함께 적으세요.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- scope 생략 시 기본값 compile -->
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.10.2</version>
<scope>test</scope>
</dependency>implementation 은 scope 를 생략한 기본 compile 과 같은 자리이고, runtimeOnly 는 runtime, testImplementation 은 test 와 짝이 맞습니다.