Java 读取maven配置文件属性时出现问题

Java 读取maven配置文件属性时出现问题,java,spring,spring-mvc,jakarta-ee,maven,Java,Spring,Spring Mvc,Jakarta Ee,Maven,我在pom文件中有一个配置文件,如下所示: <profile> <id>local</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties>

我在pom文件中有一个配置文件,如下所示:

<profile>
            <id>local</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <application.domain>mydomain.com</application.domain>
                <application.name>MyApp</application.name>
            </properties>
 </profile>
${application.name}
first.key =\u0627\u0644\u062E\u0627\u0635 \u0628\u0643 ${application.name} \u0627\u0633\u062A\u0645\u0631 \u0645\u0639 \u062D\u0633\u0627\u0628
second.key=\u061F ${application.name} \u0644\u064A\u0633 \u0644\u062F\u064A\u0643 \u062D\u0633\u0627\u0628 \u0639\u0644\u0649

第一个键可以正常工作,值被成功替换,但第二个键和其他类似的键无法正常工作。我不知道为什么,有什么想法吗?

也许Maven过滤机制被Unicode转义阻塞了。为什么不直接用UTF-8来解释呢

first.key =الخاص بك ${application.name} استمر مع حساب
second.key=؟ ${application.name} ليس لديك حساب على

如果要将属性文件中的应用程序名称替换为Maven pom中的值,则必须:

  • 在属性文件中使用@variable@格式!我理解这是一个Maven变量
  • 为资源(至少为属性文件)激活资源筛选

  • 您应该为资源筛选定义正确的文件编码(建议使用UTF-8,但无论如何属性文件必须使用ascii-7作为您的文件)。

    在pom文件中添加以下插件后,我的工作正常:


    请不要。属性文件不能为UTF-8格式。。。或者他们可以?它们应以ascii-7和\unnn格式可读。Maven应配置为以正确的编码读取(其他)已过滤的源文件。@helios可读吗?我不知道你的情况,但我看不懂Unicode转义(也不懂阿拉伯语,但那是另一个问题:-))。严肃地说:自从Unicode问世以来,我想说用UTF-8存储文件是一种很好的做法,我看不出有什么理由不这样做(只要您正确配置源代码),我的评论一点也不清楚。我的意思是Java属性文件不能包含任何非ascii-7字符。如果要在上面保留字符,则必须使用\unnn格式。它仍然是ascii-7(同时也是UTF-8;-),但是java.util.Properties会将它正确地解码到内存中。如果您尊重这一点,那么Maven将可以过滤文件(它可以检测为ascii、iso-8859或UTF-8)。Maven不会尝试解码\unnn格式。对于Maven来说,它很简单:baru numbers.Properties javadoc告诉我们关于文件编码的事情:@helios,那么你有什么建议?