我的java项目中有很多资源文件。其中许多重复了一些值。我决定将所有值移至 application.properties 文件,并在项目构建期间使用 maven-resource-plugin 将它们传播到其他文件,如下所示:
<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文件中使用
email.regexp
属性,如下所示:
<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-->
如有任何帮助,我们将不胜感激! 预先感谢您!
有一个使用自定义过滤器的解决方案。 但是,我认为资源插件足够聪明,可以识别最流行的格式之一并应用转义。