Maven default locale not same with OS locale

前端 未结 3 2161
天涯浪人
天涯浪人 2021-02-20 06:44

When I type

mvn --version

in command prompt I see:

Default Locale : en_US

However my System Loca

相关标签:
3条回答
  • 2021-02-20 07:02

    You can use this command

    set MAVEN_OPTS= -Duser.language=tr
    

    Anyway the best solution is to put these informations in the POM file and never by command line. In particular you have to deal with the configuration of 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>
    

    Second Question: Another question if I may, I am running a web app in my locale but it supports lets say german, english.. And your system locale is DE. Can I get your system locale from your request? Or maybe the language you prefer by your browser?

    You can take these informations from the request. Here is an example in a 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);
      }
    }
    
    0 讨论(0)
  • 2021-02-20 07:18

    You can also use

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

    This case works better when the argument is needed at the start of the JVM, as using maven-surefire-plugin, your JVM is already running and the arguments won't be reloaded (that was my case using some initialization with @RunWith(SpringRunner.class) and @SpringBootTest to initialize a MockMvc).

    0 讨论(0)
  • 2021-02-20 07:21

    Defining the property allows you to pass them as command line argument.

    This works for me:

    <project>
        <properties>
            <user.language>de</user.language>
            <argLine>-Duser.language=${user.language}</argLine>
        </properties>
    </project>
    
    mvn -Duser.language=tr
    
    0 讨论(0)
提交回复
热议问题