티스토리 뷰
오래된 프로젝트의 배포환경을 구성해달라는 요청을 받았다. ant 로 빌드스크립트를 작성하고 빌드를 수행했는데 다음과 같은 오류메세지가 나오면서 빌드가 정상적으로 되지 않았다.
build-project:
[javac] Compiling 1237 source files to /app/workspace/TESTPJT/build/classes
[javac] /app/workspace/TESTPJT-dev/src/test/pjt/common/web/ConnectorServlet.java:45: error: unmappable character for encoding UTF-8
[javac]
build.xml에 build 시 UTF-8로 인코딩을 하도록 다음과 같이 설정은 해놓은 상태이다.
<target name="build-project" depends="init">
<javac includeantruntime="false" destdir="${dist.classes.dir}" encoding="UTF-8">
이렇게 하면 대부분의 문제는 해결되었다고 하는데 나는 처음부터 이상태였는데 인코딩 문제가 지속되었다.
그렇다면 어디에 문제가 있는 상황일까?
사실 어마어마하게 삽질을 했다.. 이런적이 없었기 때문에.. Jenkins의 JAVA Global Properties 에서 JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 이것도 넣어보고 build.xml 파일의 charset이 us-ascii 라서 강제로 UTF-8로 변환도 해보고.. 등등 많은 삽질을 하였지만 성과는 없었다.
답은 역시 오류로그에 있었다. 위에 나온 ConnectorServlet과 함께 문제가 되는 녀석을 찾아가서 file의 type을 살펴봤다. 살펴보는 방법은 다음과 같다.
$ file -bi 파일명
다른 파일들은 다 charset이 utf-8로 나오는데 문제가 되는 녀석들은 charset이 ISO-8859였다.. 역시나 오래된 프로젝트는 무섭다. 무슨 코드가 숨어있는지.. 왜 이렇게 뒤죽박죽인지 아무도 모른다.
조치는 간단하였다. 문제가 되는 파일의 내용을 복사해둔 뒤, encoding이 UTF-8인 파일을 복사해서 내용을 복사해둔 내용으로 바꿔치기 하였다. 그랬더니 잘 돌아간다.
즉 javac 수행을 하며 UTF-8로 인코딩 하라고 명령을 날렸는데 UTF-8이 아닌 녀석을 만나서 생긴 에러였다. 에러내용을 꼼꼼하게 살펴보고 전체가 아닌 몇몇 파일들만 문제라면 위처럼 조치해보자.
끝!
'CI,CD > Build' 카테고리의 다른 글
maven project pom.xml : unknown error line 1 오류 (0) | 2021.01.11 |
---|---|
Ant Build (build.xml) 기본 사용법 with Jenkins (0) | 2020.11.23 |
Could not calculate build plan : one of its dependencies could not be resolved 오류 해결하기 (0) | 2020.08.18 |
linux 환경에서 maven repository settings.xml 설정하기 (0) | 2020.07.27 |
Nexus3 3rd party repository 생성 및 upload 하기 (0) | 2020.07.27 |