Установить верный плагин Locale в Maven POM файл - PullRequest
14 голосов
/ 18 января 2012

Я прочитал в maven-surefire-plugin и локали по умолчанию , что Maven запускает разветвленные тесты и, следовательно, может потерять любую локаль, которую вы могли установить.

Есть ли способ запустить тесты в Maven в раздвоенном режиме и при этом сохранить локаль?

- РЕДАКТИРОВАТЬ -

Итак, чтобы прояснить немного: Можно полностью установить язык и регион в свойствах системы, используя:

<systemPropertyVariables>
  <user.language>en</user.language>
  <user.region>GB</user.region>
</systemPropertyVariables>

И онифактически перешел в запущенный процесс.Это, однако, не устанавливает язык соответственно;локаль остается Системной По умолчанию.

Ответы [ 4 ]

18 голосов
/ 26 июля 2013

Попробуйте это:

   <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
            <argLine>-Duser.language=en -Duser.region=GB</argLine>
        </configuration>
   </plugin>
2 голосов
/ 25 января 2012

Язык вашего приложения по умолчанию определяется тремя способами. Сначала , если вы явно не изменили значение по умолчанию, метод getDefault () возвращает локаль, которая была первоначально определена виртуальной машиной Java (JVM) при первой загрузке.То есть JVM определяет локаль по умолчанию из среды хоста.Языковой стандарт среды хоста определяется операционной системой хоста и пользовательскими настройками, установленными в этой системе.

Второй , в некоторых реализациях среды выполнения Java пользователь приложения может переопределить языковой стандарт по умолчанию хоста с помощьюпредоставление этой информации в командной строке путем установки системных свойств user.language, user.country и user.variant.[ Источник ]

Я думаю, что вы являетесь жертвой первой части, поэтому вторая никогда не получает шанса.

Вместо этого вы можете в модульном тесте (или, возможно, в его базовом классе) программно установить язык по умолчанию, как указано далее в том же тексте:

В-третьих, ваше приложение можетвызовите метод setDefault(Locale aLocale).Метод setDefault(Locale aLocale) позволяет вашему приложению установить общесистемный ресурс.После того, как вы установите язык по умолчанию с помощью этого метода, последующие вызовы Locale.getDefault() вернут вновь установленный язык.

static{
        Locale.setDefault(Locale.UK);
}
2 голосов
/ 23 января 2012

У меня нет способа проверить это, но попробуйте:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.9</version>
    <configuration>
        <project>
            <properties>
                <user.language>en</user.language>
                <user.region>GB</user.region>
            </properties>
        </project>
        <includes>
            <include>**/*Test.java</include>
        </includes>
        <forkMode>pertest</forkMode>
    </configuration>
</plugin>

РЕДАКТИРОВАТЬ: ОК попробуйте это:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.9</version>
    <configuration>
        <systemPropertyVariables>
            <user.language>en</user.language>
            <user.region>GB</user.region>
        </systemPropertyVariables>
        <includes>
            <include>**/*Test.java</include>
        </includes>
        <forkMode>pertest</forkMode>
    </configuration>
</plugin>
0 голосов
/ 13 января 2018

У меня была такая же проблема, но мне пришлось ее решить без связи с файлом pom.xml.Это возможно через глобальный конфигурационный файл Maven (обычно расположенный в ~/.m2/settings.xml).И для этого вы добавляете профиль, как показано ниже, который будет активирован по умолчанию:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
        http://maven.apache.org/xsd/settings-1.0.0.xsd">

    ...

    <profiles>
        <profile>    
            <id>my-prof</id>
            <properties>
                <argLine>-Duser.language=en -Duser.region=GB</argLine>
            </properties>            
        </profile>
    </profiles>

    <activeProfiles>
        <activeProfile>my-prof</activeProfile>
    </activeProfiles>

    ...

</settings>
...