eclipse-->run as --> maven test 中文乱码

本文介绍了解决Maven测试过程中出现的中文乱码问题的方法。通过调整maven-surefire-plugin插件的配置参数forkMode和argLine,设置JVM启动时的文件编码为UTF-8,有效避免了因操作系统默认编码导致的乱码问题。

今天建了个maven project 测试 mybaits

直接运行 junit测试用例的时候,输出中文正常

用 eclipse-->run as --> maven test  就出现中文乱码

从网上找到解决的办法:

原文:http://monsoongale.iteye.com/blog/1028926

maven-surefire-plugin是运行mvn test时执行测试的插件,

其有一个配置参数forkMode,默认为once,即表示每次运行test时,新建一个JVM进程运行所有test.

这可能会导致乱码问题.首先将forkMode设置为never,即不新建.再运行mvn test,全部OK了.果然是这个问题!!

于是再找官方参数说明,发现了argLine参数,这个参数与forkMode一起使用,可以设置新建JVM时的JVM启动参数,

于是设置<argLine>-Dfile.encoding=UTF-8</argLine>,明确指定一下JVM的file.encoding,并将forkMode从never改回once,

还是每次新建一个JVM进程.再次运行mvn test,一起OK了,问题解决.

 

究其原因,是因为MAVEN的maven-surefire-plugin在新建JVM进程后,由于没有指定encoding,

采用了OS的默认编码,导致读取UTF-8文件(测试类的sql脚本文件)时出现乱码

 

部分 pom.xml 代码

	<build>
		<plugins>
			<!-- 解决maven test命令时console出现中文乱码乱码 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.7.2</version>
				<configuration>
					<forkMode>once</forkMode>
 					<argLine>-Dfile.encoding=UTF-8</argLine> 
<!-- 					<systemProperties> -->
<!-- 						<property> -->
<!-- 							<name>net.sourceforge.cobertura.datafile</name> -->
<!-- 							<value>target/cobertura/cobertura.ser</value> -->
<!-- 						</property> -->
<!-- 					</systemProperties> -->
				</configuration>
			</plugin>
		</plugins>
	</build>


 

<think> 我们参考上述引用内容,用户询问的是如何执行`mvn -U clean install`命令。根据引用内容,这个命令是Maven中常用的命令组合,用于清理项目、强制更新依赖并安装到本地仓库。 步骤分解: 1. `clean`:删除之前构建生成的件(通常是`target`目录)。 2. `-U`:强制检查远程仓库的更新,确保使用最新的依赖。 3. `install`:将项目构建的产物(如JAR包)安装到本地Maven仓库。 执行方法: - 在命令行中(如终端、命令提示符或PowerShell)进入项目根目录(即包含`pom.xml`的目录)。 - 输入命令:`mvn -U clean install` - 按回车执行。 注意事项(根据引用内容): - 如果遇到测试失败,可以跳过测试:添加参数`-DskipTests`(跳过测试执行,但编译测试代码)或`-Dmaven.test.skip=true`(跳过测试编译和执行)。如引用[2]和[4]所示。 - 如果遇到编码问题,可以设置环境变量:如引用[5]中提到设置`JAVA_TOOL_OPTIONS`,例如在Windows上临时设置:`set JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8`,然后再执行命令。 - 如果遇到检查风格(checkstyle)错误,可以跳过检查:添加参数`-Dcheckstyle.skip`,如引用[3]所示。 因此,一个完整的跳过测试的执行命令示例为: ``` mvn -U clean install -DskipTests ``` 或者,如果需要同时跳过检查: ``` mvn -U clean install -DskipTests -Dcheckstyle.skip ``` 另外,如果遇到环境变量问题,可以按照引用[5]的方法临时设置环境变量(Windows): ``` set JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 mvn -U clean install ``` 在Linux或macOS中,可以使用: ``` export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8" mvn -U clean install ``` 总结:用户只需在项目根目录下执行`mvn -U clean install`即可。根据具体情况,可能需要添加跳过测试或编码设置等参数。 生成相关问题: 1. 如何跳过测试执行Maven构建命令? 2. `mvn clean install`和`mvn clean package`有什么区别? 3. 如何解决Maven构建中的编码问题? </think> ### 执行 `mvn -U clean install` 命令的方法 #### 1. **基本执行步骤** - **打开终端**:在项目根目录(包含 `pom.xml` 的目录)打开命令行工具(如 CMD、PowerShell 或终端)。 - **输入命令**: ```bash mvn -U clean install ``` - **等待构建完成**:Maven 会自动执行以下操作: - `clean`:清除之前构建的 `target` 目录[^4] - `-U`:强制更新所有依赖(检查远程仓库的最新版本)[^1][^3] - `install`:编译代码、运行测试,并将生成的包安装到本地仓库(默认路径:`~/.m2/repository`)[^4] #### 2. **常见参数调整** - **跳过测试**(加速构建): ```bash mvn -U clean install -DskipTests # 编译测试代码但不执行 或 mvn -U clean install -Dmaven.test.skip=true # 完全跳过测试编译和执行[^2][^4] ``` - **跳过代码检查**(如 Checkstyle): ```bash mvn -U clean install -Dcheckstyle.skip # 避免静态检查报错[^3] ``` - **指定环境编码**(解决乱码问题): ```bash set JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 # Windows临时设置 mvn -U clean install ``` 或 Linux/macOS: ```bash export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8" mvn -U clean install ``` #### 3. **IDE 中执行** - **IntelliJ IDEA**: 1. 打开右侧 Maven 面板 2. 右键点击项目 → 选择 `Clean` 3. 右键点击项目 → 选择 `Install -U`(或通过命令行窗口运行)[^2] - **Eclipse**: 1. 右键项目 → `Run As` → `Maven build...` 2. 在 Goals 输入框填写:`clean install -U` #### 4. **常见问题解决** | 问题类型 | 解决方案 | |------------------|--------------------------------------------------------------------------| | 依赖下载失败 | 检查网络,或添加 `-U` 强制更新依赖[^1][^3] | | 编码错误 | 设置 `JAVA_TOOL_OPTIONS` 环境变量(如上)[^5] | | 构建过程卡死 | 添加 `-T 1C` 参数限制线程数(如 `mvn -T 1C -U clean install`) | | 特定模块报错 | 使用 `-pl 模块名` 单独构建(如 `mvn -pl core-module clean install -U`) | > **提示**:首次执行建议添加 `-X` 参数查看详细日志(如 `mvn -X -U clean install`),便于定位问题[^5]。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值