maven编码资源spring messageSource
maven encoding resources spring messageSource
有一个 spring 项目包含此消息来源:
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasenames("Language", "original/Language");
messageSource.setDefaultEncoding("UTF-8");
messageSource.setFallbackToSystemLocale(true);
return messageSource;
}
测试如下:
@Test
public void getMessageFromOriginal() {
String message = messageSource.getMessage("javax.portlet.description.2", null, new Locale.Builder().setLanguage("es").build());
Assert.assertNotNull(message);
Assert.assertEquals("Mi Cuenta organiza toda tu información en una ubicación sencilla de utilizar. Los usuarios pueden editar sus perfiles y ver la membresía del sitio y las organizaciones y grupos de usuarios a los que pertenecen.", message);
}
如果我 运行 来自 IDE 的测试它按预期工作,但是当我使用 mvn 执行测试时我得到:
LanguageTest.getMessageFromOriginal:53 expected:<...za toda tu informaci[??n en una ubicaci??n sencilla de utilizar. Los usuarios pueden editar sus perfiles y ver la membres??]a del sitio y las or...> but was:<...za toda tu informaci[?n en una ubicaci?n sencilla de utilizar. Los usuarios pueden editar sus perfiles y ver la membres?]a del sitio y las or...>
在我的 parent pom.xml 我正在使用:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.15</version>
<configuration>
<argLine>-Dfile.encoding=UTF-8</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
我做错了什么?
默认定义如下:
<project>
...
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
...
</project>
这导致上面的 属性 将自动被 maven-resources-plugin, maven-compiler-plugin 等拾取,这意味着您可以删除 pom 的这一部分:
<configuration>
<encoding>UTF-8</encoding>
</configuration>
有一个 spring 项目包含此消息来源:
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasenames("Language", "original/Language");
messageSource.setDefaultEncoding("UTF-8");
messageSource.setFallbackToSystemLocale(true);
return messageSource;
}
测试如下:
@Test
public void getMessageFromOriginal() {
String message = messageSource.getMessage("javax.portlet.description.2", null, new Locale.Builder().setLanguage("es").build());
Assert.assertNotNull(message);
Assert.assertEquals("Mi Cuenta organiza toda tu información en una ubicación sencilla de utilizar. Los usuarios pueden editar sus perfiles y ver la membresía del sitio y las organizaciones y grupos de usuarios a los que pertenecen.", message);
}
如果我 运行 来自 IDE 的测试它按预期工作,但是当我使用 mvn 执行测试时我得到:
LanguageTest.getMessageFromOriginal:53 expected:<...za toda tu informaci[??n en una ubicaci??n sencilla de utilizar. Los usuarios pueden editar sus perfiles y ver la membres??]a del sitio y las or...> but was:<...za toda tu informaci[?n en una ubicaci?n sencilla de utilizar. Los usuarios pueden editar sus perfiles y ver la membres?]a del sitio y las or...>
在我的 parent pom.xml 我正在使用:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.15</version>
<configuration>
<argLine>-Dfile.encoding=UTF-8</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
我做错了什么?
默认定义如下:
<project>
...
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
...
</project>
这导致上面的 属性 将自动被 maven-resources-plugin, maven-compiler-plugin 等拾取,这意味着您可以删除 pom 的这一部分:
<configuration>
<encoding>UTF-8</encoding>
</configuration>