1

プロジェクトでmavenの代わりにbuildrを試してきました。

特定のパッケージの一時的な依存関係を要求すると、次のエラーが発生します。

$ 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
...
$

commons-exec-1.0.pom ファイルに非 US-ASCII 文字が含まれていることを確認できます。しかし、私はそれらが有効な UTF-8 であると信じています。

面倒なファイルはサードパーティのものなので、簡単には変更できません。buildr に正しく処理させるためにできることはありますか?

4

1 に答える 1

1

BuilderがRuby1.9(または互換性のある)rubiesでPOMを読み取る方法にバグがあると思います。これは、POMのXMLがルビーのデフォルトの外部エンコーディングで読み取れることを前提としています。ruby 1.9.3-p194を使用している私のマシンでは、エンコーディングはUTF-8です(したがって、commons-exec POMは正常に読み取られます)が、ご使用の環境では、デフォルトのエンコーディングはUS-ASCIIのようです(問題が発生します)。puts Encoding.default_external.inspectこれは、ビルドファイルのどこかに配置して、何が得られるかを確認することで確認できます。

ビルダーに読み取らせたいすべてのファイルがUTF-8(またはASCIIなどのUTF-8互換)である限り、ビルドファイルの先頭に次のように配置することで、この問題を回避できるはずです。

Encoding.default_external = 'UTF-8'

それが機能するかどうかを確認します。もしそうなら、ビルダーに対してバグを報告して、彼らが問題について知っているようにすることをお勧めします。Encoding.default_external(一般的に、グローバル設定であるため、いじりたくありません。)

于 2012-11-14T04:38:04.413 に答える