【问题标题】:maven encoding resources spring messageSourcemaven 编码资源 spring messageSource
【发布时间】:2015-02-04 10:09:09
【问题描述】:

有一个带有此消息来源的 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...>

在我正在使用的父 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>

我做错了什么?

【问题讨论】:

    标签: spring encoding maven-3 maven-resources-plugin


    【解决方案1】:

    默认是定义如下:

    <project>
      ...
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
      ...
    </project>
    

    这导致上述属性将自动被maven-resources-pluginmaven-compiler-plugin 等获取,这意味着你可以删除你的 pom 的这一部分:

    <configuration>
      <encoding>UTF-8</encoding>
    </configuration>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-09
      • 2017-06-24
      • 1970-01-01
      相关资源
      最近更新 更多