当我打字时
mvn --version
在命令提示符中,我看到:默认区域设置:中文_美国但是,我的系统区域设置是tr_TR当我在没有maven的情况下启动Java SE项目并运行Locale.getDefault()时,tr_TR返回正常,但当我运行Maven项目,然后运行Locale.getDefault()时,它返回en_US,这是我不喜欢的。如何告诉maven我的默认语言环境是TR?
tr_TR
Locale.getDefault()
en_US
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); } }
dwbf0jvd2#
您也可以使用
<properties> <argLine>-Duser.language=tr</argLine> </properties>
当JVM启动时需要参数时,这种情况效果更好,例如使用maven-surefire-plugin时,JVM已经在运行,并且参数不会被重新加载(这是我使用@RunWith(SpringRunner.class)和@SpringBootTest初始化MockMvc的情况)。
maven-surefire-plugin
@RunWith(SpringRunner.class)
@SpringBootTest
MockMvc
e1xvtsh33#
定义属性允许您将它们作为命令行参数传递。这对我很有效:
<project> <properties> <user.language>de</user.language> <argLine>-Duser.language=${user.language}</argLine> </properties> </project>
mvn -Duser.language=tr
3条答案
按热度按时间14ifxucb1#
您可以使用以下命令
无论如何,最好的解决方案是将这些信息放在POM文件中,而不是通过命令行。特别是,您必须处理**Maven-Surefire-Plugin**的配置
***第二个问题:***另一个问题,如果可以的话,我正在我的区域设置中运行一个Web应用程序,但它支持德语、英语等语言,而您的系统区域设置是DE。我可以从您的请求中获得您的系统区域设置吗?或者您的浏览器首选的语言?
您可以从请求中获取这些信息。下面是servlet中的一个示例。
dwbf0jvd2#
您也可以使用
当JVM启动时需要参数时,这种情况效果更好,例如使用
maven-surefire-plugin
时,JVM已经在运行,并且参数不会被重新加载(这是我使用@RunWith(SpringRunner.class)
和@SpringBootTest
初始化MockMvc
的情况)。e1xvtsh33#
定义属性允许您将它们作为命令行参数传递。
这对我很有效: