2012-11-13 2 views
1

나는 프로젝트에서 maven 대신 buildr을 실험 해왔다.buildr는 유니 코드 pom 파일을 올바르게 처리 할 수 ​​있습니까?

$ buildr --trace=all 
... 
** Invoke /home/tcc/timd/.m2/repository/org/slf4j/slf4j-api/1.5.6/slf4j-api-1.5.6.pom (first_time, not_needed) 
Loading m2 pom file from /home/tcc/timd/.m2/repository/org/slf4j/slf4j-api/1.5.6/slf4j-api-1.5.6.pom 
** Invoke /home/tcc/timd/.m2/repository/org/slf4j/slf4j-parent/1.5.6/slf4j-parent-1.5.6.pom (first_time, not_needed) 
Loading m2 pom file from /home/tcc/timd/.m2/repository/org/slf4j/slf4j-parent/1.5.6/slf4j-parent-1.5.6.pom 
** Invoke /home/tcc/timd/.m2/repository/org/apache/commons/commons-exec/1.0/commons-exec-1.0.pom (first_time, not_needed) 
Loading m2 pom file from /home/tcc/timd/.m2/repository/org/apache/commons/commons-exec/1.0/commons-exec-1.0.pom 
Buildr aborted! 
ArgumentError : invalid byte sequence in US-ASCII 
... 
$ 

내가 파일 공유지 - 간부 - 1.0.pom US-ASCII 이외의 문자가 있는지 확인 할 수 있습니다 : 나는 주어진 패키지에 대한 과도 종속성을 요청하면

, 나는이 오류가 발생합니다. 그러나 나는 그것이 유효한 UTF-8이라고 생각한다.

문제가있는 파일은 제 3 자의 파일이므로 쉽게 변경할 수 없습니다. 제가 buildr을 가지고 할 수있는 일이 있습니까 올바르게 처리 할 수 ​​있습니까?

+0

'US-ASCII에서 유효하지 않은 바이트 시퀀스'는 일반적인 루비 문자 인코딩 오류 메시지입니다. 어떤 버전의 루비를 사용하고 있습니까? –

+0

ruby ​​version 1.9.3p327 – timbod

답변

1

buildr이 Ruby 1.9 (또는 호환) 루비에서 POM을 읽는 방식에 버그가 있다고 생각합니다. POM의 XML은 루비의 기본 외부 인코딩으로 읽을 수 있다고 가정합니다. 내 컴퓨터에서 Ruby 1.9.3-p194는 인코딩이 UTF-8이므로 (commons-exec POM은 잘 읽음) 사용자 환경에서는 기본 인코딩이 US-ASCII (문제의 원인) 인 것 같습니다. 당신은 당신의 빌드 파일에 어딘가에 puts Encoding.default_external.inspect을 넣고 그것이 무엇을 제공하는지 보아 이것을 확인할 수 있습니다.

buildr에서 읽으려는 모든 파일이 UTF-8 (또는 ASCII와 같은 UTF-8 호환)이면 빌드 파일의 맨 위에 다음을 입력하여이 문제를 해결할 수 있어야합니다.

Encoding.default_external = 'UTF-8' 

작동하는지 확인하십시오. 만약 그렇다면, 나는 그들이 문제에 대해 알 수 있도록 buildr에 대한 버그를 제기하는 것이 좋습니다. (일반적으로 글로벌 설정이므로 Encoding.default_external을 사용하고 싶지는 않습니다.)

+0

제안 된 해결 방법으로 내 문제가 해결되었습니다. 감사! – timbod