Maven 프로젝트를 설정할 때 현지화 문제를 해결하는 방법은 무엇입니까?

Maven 프로젝트를 설정할 때 현지화 문제를 해결하는 방법은 무엇입니까?

민트 노트북에 ovirt를 설치하려고 합니다.

데비안 배포판에 oVirt를 설치하는 것은 실험적이며 문제 해결에 대한 온라인 지식은 거의 없습니다.

그런데 문제의 원인을 찾았으나 어떻게 해결해야 할지 모르겠습니다.

실패한 Maven 테스트 출력은 다음과 같습니다.

    -------------------------------------------------------------------------------
Test set: org.ovirt.engine.core.branding.BrandingManagerTest
-------------------------------------------------------------------------------
Tests run: 11, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.249 sec <<< FAILURE!
testGetMessageDefaultLocale(org.ovirt.engine.core.branding.BrandingManagerTest)  Time elapsed: 0.016 sec  <<< FAILURE!
org.junit.ComparisonFailure: The result should be 'Main header' expected:<Main header[]> but was:<Main header[(fr)]>
        at org.junit.Assert.assertEquals(Assert.java:115)
        at org.ovirt.engine.core.branding.BrandingManagerTest.testGetMessageDefaultLocale(BrandingManagerTest.java:81)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
        at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103)
        at com.sun.proxy.$Proxy0.invoke(Unknown Source)
        at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150)
        at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69)

여섯 번째 줄을 참고하세요.The result should be 'Main header' expected:<Main header[]> but was:<Main header[(fr)]>

문자열 불일치로 인해 테스트가 실패한 것 같습니다. 아마도 내 Linux 설치가 프랑스어이기 때문일 수 있습니다. 이를 방지하기 위해 강제로 영어로만 설치하도록 하는 방법을 찾고 싶습니다. addin을 시도했지만 BUILD-LOCALES="en"문제가 해결되지 않았습니다.

어떤 아이디어가 있나요?

답변1

따라서 문제는 Linux가 프랑스어이므로 JVM의 기본 로케일도 프랑스어가 된다는 점이라고 올바르게 가정합니다. 그러나 단위 테스트에서는 en_US를 기본 로케일로 가정합니다(테스트 실행 시작 시 로케일을 명시적으로 en_US로 설정하지 않았기 때문입니다).

특정 사례에서 이 문제를 해결하려면 다음을 전달하여 실행하면 됩니다.

DEV_EXTRA_BUILD_FLAGS='-Duser.country=US -Duser.언어=en'은 테스트를 실행할 때 로케일을 JVM에 전달하고 테스트를 위해 올바른 속성을 로드하도록 해야 합니다.

관련 정보