我在一个java项目中有很多资源文件。他们中的许多人重复了一些价值观。我决定将所有的值移到application.properties文件中,并在项目构建期间使用maven-资源插件将它们传播到其他文件,如下所示:
<build>
<filters>
<filter>
${project.basedir}/src/main/resources/application.properties
</filter>
</filters>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<build/>application.properties文件的内容如下:
email.regexp=^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$
# other properties例如,假设我在MyXML.xml文件中使用了属性,如下所示:
<composite-id name="id" class="UserID">
<key-property name="email">
<column name="email" check="email ~ $$${email.regexp}$$"/>
</key-property>
</composite-id>
<!--other content-->正如您所注意到的,email.regexp包含一个符号字符。它是在人物文件中转义的.xml之一。
问题是
执行mvn package后,MyXML.xml的内容如下:
切除结果
<composite-id name="id" class="UserID">
<key-property name="email">
<column name="email" check="email ~ $$^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$$$"/>
</key-property>
</composite-id>
<!--other content-->实际效果
<composite-id name="id" class="UserID">
<key-property name="email">
<column name="email" check="email ~ $$^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$$$"/>
</key-property>
</composite-id>
<!--other content-->任何帮助都是非常感谢的!提前谢谢你!
发布于 2020-10-18 21:33:54
有一个使用自定义过滤器的解决方案。但是,我认为资源插件足够聪明,能够识别最流行的格式之一并应用转义。
https://stackoverflow.com/questions/64418403
复制相似问题