Jenkins Maven 作业字符集

Jenkins Maven Job Charset

我正在使用 Spring 测试来测试我的 Spring 应用程序,它基本上是一个服务于 JSON 和其他一些上传媒体的 REST 网络服务。

单元测试在所有开发人员的机器上都运行良好,其中一些测试在 JSON 响应中返回的字符串,其中一小部分测试特殊字符。

应用程序已完全配置为对所有内容使用 UTF-8,但是 JSON 响应返回了错误的字符集,因此测试失败。

我尝试在 /etc/default/jenkins 上配置以下行:

JAVA_ARGS="-Djava.awt.headless=true -Dfile.encoding=UTF8"

但我仍然得到相同的结果。

我也有机会看到 Charset.defaultCharset() 是什么,当 运行 一个特定的测试...它看起来像 US-ASCII...

有人可以告诉我我做错了什么吗?

我发现问题所在了。

在我的 Spring 测试配置中,我正在读取一个 DML.sql 文件来创建初始测试数据,初始化数据库的行是这样的:

<jdbc:initialize-database data-source="dataSource">
    <jdbc:script location="classpath:sql/DML.sql" />
</jdbc:initialize-database>

这让我的配置依赖于服务器字符集,在我的情况下,我在服务器中设置了那个奇怪的 "US-ASCII"。

我通过将 encoding 属性设置为 UTF-8 使其独立:

<jdbc:initialize-database data-source="dataSource">
    <jdbc:script location="classpath:sql/DML.sql" encoding="UTF-8" />
</jdbc:initialize-database>

因此可以针对具有特殊字符的值测试来自 H2 数据库的值。