maven-assembly打包中文乱码问题

背景

在使用maven-assembly-plugin打包时,发现打包后文件中有部分中文出现乱码

解决

经过一番排查之后,发现是mvn编码的问题,window中mvn的默认编码是GBK。可通过如下命令查看:

C:\Users\2>mvn -v

Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: D:\upupfeng\installed\apache-maven-3.6.3\bin\..
Java version: 1.8.0_261, vendor: Oracle Corporation, runtime: D:\upupfeng\installed\jdk8\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

我们需要将编码修改为UTF-8。

有以下两种修改方式:

1. 修改mvn命令对应的脚本

我是window电脑,修改maven安装目录/bin/mvn.cmd

mvn.cmd中搜索-D,在带-D的行后添加一行:"-Dfile.encoding=UTF-8" ^。如下所示:

"%JAVACMD%" ^
  %JVM_CONFIG_MAVEN_PROPS% ^
  %MAVEN_OPTS% ^
  %MAVEN_DEBUG_OPTS% ^
  -classpath %CLASSWORLDS_JAR% ^
  "-Dclassworlds.conf=%MAVEN_HOME%\bin\m2.conf" ^
  "-Dfile.encoding=UTF-8" ^
  "-Dmaven.home=%MAVEN_HOME%" ^
  "-Dlibrary.jansi.path=%MAVEN_HOME%\lib\jansi-native" ^
  "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
  %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%
2. 配置环境变量

mvn命令运行时会读取名为MAVEN_OPTS的环境变量,可以通过配置环境变量解决。和配JAVA_HOME一样配一下就好了

变量:MAVEN_OPTS
值:-Dfile.encoding=UTF-8

修改完后,再次执行mvn -v就可以看到编码变成UTF-8了,再次打包,中文就不会乱码了

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!如果您想使用 Mavenmaven-assembly-plugin 插件来打包 Mapper,您可以按照以下步骤进行操作: 1. 首先,在您的 Maven 项目的 pom.xml 文件中,确保已经添加了 maven-assembly-plugin 插件的配置。示例如下: ```xml <build> <plugins> <!-- 其他插件配置... --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.3.0</version> <configuration> <!-- 插件的配置参数 --> <!-- 您可以根据您的需求进行配置 --> </configuration> <executions> <execution> <id>assemble</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 2. 接下来,您需要在 pom.xml 文件中添加相关的依赖项。请确保您已经添加了与 Mapper 相关的依赖项,例如 MyBatis 或其他 ORM 框架。 3. 在配置 maven-assembly-plugin 插件时,您可以使用 `<configuration>` 标签来指定如何打包 Mapper。以下是一个示例配置,假设您的 Mapper 文件位于 `src/main/resources/mapper` 目录下: ```xml <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>com.example.MainClass</mainClass> </manifest> </archive> <appendAssemblyId>false</appendAssemblyId> <finalName>my-project</finalName> <descriptors> <descriptor>src/main/assembly/assembly.xml</descriptor> </descriptors> <outputDirectory>${project.build.directory}/assembly</outputDirectory> </configuration> ``` 请注意,上述示例中的 `assembly.xml` 是一个自定义的 XML 文件,用于指定要打包的文件和目录。您可以根据自己的需求进行配置。 4. 创建一个名为 `assembly.xml` 的 XML 文件,并将其放置在 `src/main/assembly` 目录下。在该文件中,您可以使用 `<fileSets>` 或其他相关标签来指定要打包的 Mapper 文件或目录。以下是一个示例配置: ```xml <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.2 http://maven.apache.org/xsd/assembly-2.1.2.xsd"> <id>assembly</id> <formats> <format>jar</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet> <directory>${project.build.outputDirectory}</directory> <outputDirectory>/</outputDirectory> </fileSet> <!-- 其他 fileSet 配置... --> </fileSets> </assembly> ``` 请注意,上述示例中的 `<directory>` 标签指定了 Mapper 文件所在的目录,`<outputDirectory>` 标签指定了打包后的存放位置。 5. 最后,在命令行中执行以下 Maven 命令来进行打包: ``` mvn clean package ``` 这将触发 maven-assembly-plugin 插件的执行,并生成包含 Mapper 的打包文件。 希望能对您有所帮助!如有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值