• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

배포 준비 과정에서 막혀 질문 드립니다.

23.12.14 16:42 작성 조회수 340

0

호돌맨의 요절복통 개발쇼

시즌2 배포 준비(빌드) 강의를 듣고 있는데, 계속 오류가 생겨 질문 올립니다.

 

우선

./gradlew clean으로 삭제한 뒤

./gradlew build를 실행하면

 

이런 식으로 한글이 깨졌다는 에러가 나옵니다.

 

해결하고자 했던 방안

  1. 세팅 바꾸기

  1. 파일 인코딩 바꾸기

  1. Help - EditCustom Vm Options

이런 방법을 써 봤으나 다 되지 않았고

 

이 코드를 build.gradle에 넣는 방식으로 해결했더니

build 후 libs 폴더가 생기지 않습니다.

 

 

그래서

이 부분을 true로 바꿔주면 plain snapshot만 생깁니다.

 


어떻게 해결해야 하나요?

 

밑 코드는 build.gradle 파일입니다.

plugins {
	id 'java'
	id 'org.springframework.boot' version '2.5.9'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id "org.asciidoctor.jvm.convert" version "3.3.2"
}

group = 'com.reheat'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '11'
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
	asciidoctorExt
}

repositories {
	mavenCentral()
}

ext {
	asciidocVersion = "2.0.6.RELEASE"
	snippetsDir = file('build/generated-snippets')
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-starter-validation'

    testImplementation 'org.junit.jupiter:junit-jupiter:5.8.1'
	testImplementation 'junit:junit:4.13.1'

	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'com.h2database:h2'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'

	//REST Docs
	asciidoctorExt "org.springframework.restdocs:spring-restdocs-asciidoctor:${asciidocVersion}"
	testImplementation "org.springframework.restdocs:spring-restdocs-mockmvc:${asciidocVersion}"
}

tasks.named('test') {
	useJUnitPlatform()
}

test {
	outputs.dir snippetsDir
}

asciidoctor {
	inputs.dir snippetsDir
	configurations 'asciidoctorExt'
	dependsOn test
}

bootJar {
	enabled = true

	dependsOn asciidoctor

	copy {
		from asciidoctor.outputDir
		into "src/main/resources/static/docs"
	}
}

jar{
	enabled = true
}

tasks.withType(JavaCompile){
	options.encoding = "UTF-8"
}

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.16

안녕하세요, 인프런 AI 인턴입니다.

빌드 시 발생하는 한글 인코딩 문제와 libs 폴더가 생성되지 않는 문제에 대해 답변 드리겠습니다.

먼저, 한글 인코딩 문제의 경우 이미 build.gradle 파일 내에 다음 옵션을 추가하여 해결하신 것으로 보입니다.

tasks.withType(JavaCompile){
    options.encoding = "UTF-8"
}

이 옵션은 Gradle이 Java 소스를 컴파일할 때 사용하는 인코딩을 UTF-8로 설정합니다. 여기서 설정이 잘 반영되었는지 확인해 보시는 것이 중요합니다. IntelliJ IDEA를 사용 중이시라면, 추가로 IDE에서 UTF-8 인코딩 설정을 확인해 보시기 바랍니다. 이미지상의 설정에서는 IntelliJ의 전역 설정(Global Encoding), 프로젝트 설정(Project Encoding) 등이 UTF-8로 되어 있는 것으로 보이니, 추가적인 인코딩 문제는 없어 보입니다.

이제 libs 폴더가 생성되지 않는 문제인데, 보통 bootJar 태스크가 성공적으로 완료되면 build/libs 디렉토리에 .jar 파일이 생성되어야 합니다. 그런데 스크린샷상에서는 build/libs 폴더 대신 build/ 디렉토리 아래에 여러 다른 폴더들이 보이는 것으로 보아 bootJar 태스크가 실행되지 않거나 실패한 가능성이 있습니다.

bootJar {
	enabled = true

	dependsOn asciidoctor

	copy {
		from asciidoctor.outputDir
		into "src/main/resources/static/docs"
	}
}

bootJar 태스크가 위와 같이 정의되어 있는데, bootJar 태스크가 asciidoctor 태스크에 의존하고 있습니다. 만약 asciidoctor 태스크가 실패한다면 bootJar 태스크도 수행되지 않을 수 있습니다. 해당 부분을 확인해 보시고, asciidoctor 태스크가 필요하지 않으시다면 의존성을 제거해 보시길 권장합니다.

또한, 장치의 설정에 문제가 있다면 다음의 공식 문서를 참고하여 Gradle 빌드 관련 설정을 검토해 보시기 바랍니다.

Spring Boot Gradle 플러그인 설정 참고 문서: Spring Boot Reference Documentation - Build

Gradle 빌드 스크립트 설정 참고 문서: Spring Boot Reference Documentation - Setting up with Gradle

문제 해결을 위해 bootJar와 관련된 태스크 설정을 수정하실 때 enabled = true만으로는 충분하지 않으며, bootJar 태스크가 성공적으로 완료됨을 보장하기 위한 조치가 필요합니다. 로그에 나타난 에러, 스크립트에 jar 태스크를 활성화할 경우 발생하는 이슈, 그리고 실행 중인 빌드 태스크의 진행 상태로 볼 때, 적절한 에러 메시지와 함께 디버깅을 시도하여 문제의 원인을 좀 더 구체적으로 파악해 보시기 바랍니다.

추가적으로, gradlew build 실행 후 예상한 위치에 libs 디렉토리나 jar 파일이 생성되지 않는 경우, 빌드 스크립트의 다른 부분에서 문제가 발생한 것일 수도 있으니 다른 태스크들의 실행 결과도 함께 확인해 보실 것을 추천드립니다. 필요하다면 Gradle 빌드 로그를 상세하게(-i 또는 –info 옵션 사용) 출력하여 어느 태스크에서 문제가 발생했는지 확인할 수도 있습니다.

이러한 점들을 꼼꼼히 확인하시면 문제를 해결하는 데 도움이 될 것입니다.