请问mavne中project.build.sourceEncoding到底有什么用

我知道maven.compiler.encoding用来指定java代码编译时的编码方式,我看网上说project.build.sourceEncoding是用来设置resource下的文件的编码方式,可是我自己试了,感觉没什么用呀,resource下的两个property文件用不同的编码方式,然后project.build.sourceEncoding不管设置成什么,target中的property文件还是原来的编码方式,没有改变,所以请问project.build.sourceEncoding这个到底怎么用呀?谢谢


回答:

project.build.sourceEncoding主要作用是指定maven编译时读取文件使用的编码。

如果一个Java文件的编码是GBK,其中包含GBK编码的中文字符,project.build.sourceEncoding设置为UTF-8,编译时会把该文件当做UTF-8编码读,编译会报错。

(相反的情况,文件是UTF-8,project.build.sourceEncoding设置为GBK,我测试的情况编译不会报错,但打印中文输出语句时乱码)

如果没有设置project.build.sourceEncoding,默认的是平台默认编码(windows简体中文版默认是GBK),可以mvn -v查看。

resource中的文件复制到target时只是原样复制,如果resource文件中的编码与project.build.sourceEncoding指定的不同,编译时不会有什么报错,运行时读取会有问题。

另外如果在Idea中使用maven,有一些额外的细节需要注意
1.修改pom文件中的project.build.sourceEncoding设置后,需要重新加载maven项目才会生效
2.project.build.sourceEncoding的设置会影响到新建文件的编码,用Idea新建文件会按照project.build.sourceEncoding指定的编码(有专门对文件类型做了特定设置的除外,典型如properties可能么设置是iso-8859-1)。
3.project.build.sourceEncoding没有指定时,在Idea新建文件或运行时,我测试的结果是会沿用上一次的编码配置(第一次是新建项目时的配置,比如我的Idea新建项目时默认指定了project.build.sourceEncoding是UTF-8,删除后仍按UTF-8执行)。所以会出现即使不配置project.build.sourceEncoding系统也能正常编译运行的情况,但用maven命令行执行命令则可能暴露问题。

总结:
1.project.build.sourceEncoding主要作用是指定maven编译时读取文件使用的编码,编码不一致时会编译报错和运行输出乱码。
2.project.build.sourceEncoding不配置的情况,更有可能在命令行执行maven命令时出问题,用IDE运行不一定会发现问题,建议明确配置project.build.sourceEncoding为UTF-8以避免潜在的问题。

以上内容是我自己测试的结果,并非权威答案,如果有错误请指出。

以上是 请问mavne中project.build.sourceEncoding到底有什么用 的全部内容, 来源链接: utcz.com/p/944561.html

回到顶部