如何在具有不同编码的异构环境中使用maven?

时间:2009-10-13 20:56:29

标签: windows linux svn maven-2 encoding

我在linux服务器(Debian)上创建了一个svn repositoy,并在windows机器上使用客户端检查我的java源代码。

现在我在不同的Linux服务器(Ubuntu)上设置了一个Hudson服务器,以定期对我的代码运行测试。但测试因编译器错误而失败:

Error: unmappable character for encoding ASCII

在我的Windows机器上,我使用了默认编码Cp1252。 在我的svn服务器上,我可以对我的源进行本地检查,看起来很好。 在我的Hudson服务器上,结帐包含非法字符。

我需要调整哪些参数,以便所有三个系统都使用有效编码?

编辑2009-10-15:

我将Ubuntu系统的默认编码更改为latin1。现在我可以用编辑器打开签出文件,它们看起来很好(感谢@ {3}}上的@ John-T。

但哈德森仍然抱怨unmappable character for encoding ASCII我发现这是由maven引起的。我找到了superuser.com,但建议的解决方案不起作用。现在maven告诉我它在复制一些资源时使用latin1,但是编译器(不使用这个设置?)​​仍然会抱怨同样的错误信息。

3 个答案:

答案 0 :(得分:18)

不,maven编译器插件不使用project.build.sourceEncoding属性。所以你需要为它配置文件编码(我使用UTF-8):

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <encoding>UTF-8</encoding>
  </configuration>
</plugin>

答案 1 :(得分:0)

首先要确定的是导致问题的角色。可能是破碎的char可以被一些纯ASCII实体替换。 SVN本身编码不可知:它只是逐字节存储传入的内容。

如果Hudson需要7位ASCII,那么这就是你所能做的。否则,找出Hudson支持的内容并以此格式保存文件。 UTF-8可能是最佳选择。

答案 2 :(得分:0)

我认为没有办法用SVN更改文件的编码。您可以使用--encoding标志设置提交消息的编码,但不能设置文件本身的内容。文本文件的格式与它们在本地磁盘上显示的格式相同。唯一的转换是根据svn:eol-style属性对行结尾的转换。