Maven默认语言环境与操作系统语言环境不同

t1qtbnec  于 2023-01-25  发布在  Maven
关注(0)|答案(3)|浏览(190)

当我打字时

mvn --version

在命令提示符中,我看到:
默认区域设置:中文_美国
但是,我的系统区域设置是tr_TR
当我在没有maven的情况下启动Java SE项目并运行Locale.getDefault()时,tr_TR返回正常,但当我运行Maven项目,然后运行Locale.getDefault()时,它返回en_US,这是我不喜欢的。
如何告诉maven我的默认语言环境是TR?

14ifxucb

14ifxucb1#

您可以使用以下命令

set MAVEN_OPTS= -Duser.language=tr

无论如何,最好的解决方案是将这些信息放在POM文件中,而不是通过命令行。特别是,您必须处理**Maven-Surefire-Plugin**的配置

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.9</version>
        <configuration>
            <systemPropertyVariables>
                <user.language>tr</user.language>
                <user.region>TR</user.region>
            </systemPropertyVariables>
        </configuration> 
    </plugin>

***第二个问题:***另一个问题,如果可以的话,我正在我的区域设置中运行一个Web应用程序,但它支持德语、英语等语言,而您的系统区域设置是DE。我可以从您的请求中获得您的系统区域设置吗?或者您的浏览器首选的语言?

您可以从请求中获取这些信息。下面是servlet中的一个示例。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;

public class GetLocale extends HttpServlet{

  public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException
  {
      Locale locale = request.getLocale();
      String language = locale.getLanguage();
      String country = locale.getCountry();

      response.setContentType("text/html");
      PrintWriter out = response.getWriter();

      out.println(language + ":" + country);
  }
}
dwbf0jvd

dwbf0jvd2#

您也可以使用

<properties>
    <argLine>-Duser.language=tr</argLine>
</properties>

当JVM启动时需要参数时,这种情况效果更好,例如使用maven-surefire-plugin时,JVM已经在运行,并且参数不会被重新加载(这是我使用@RunWith(SpringRunner.class)@SpringBootTest初始化MockMvc的情况)。

e1xvtsh3

e1xvtsh33#

定义属性允许您将它们作为命令行参数传递。
这对我很有效:

<project>
    <properties>
        <user.language>de</user.language>
        <argLine>-Duser.language=${user.language}</argLine>
    </properties>
</project>
mvn -Duser.language=tr

相关问题