如何验证属性/自定义配置文件?

用户710818:

我的应用程序具有许多属性/文本配置文件。是否有验证此类文件的通用方法?可能是某些工具或类似xsd的东西?文件很大(超过1000行),因此我经常出错。在大多数情况下,文件中的信息-是指向不同目录的路径。因此,如果它们存在并保持一致,那将是很好的。例如,如果我有

mydata.root="c:\data"

然后我有:

myreports=${mydata.root}/reports

最好检查一下c:\ data和c:\ data \ report是否存在

而不是写(向下几百行),例如

myreports=${mdata.root}/reports
sudocode:

您可以在构建文件中进行此验证。

例如,以下构建文件定义了一个macrodef validate-file-property可验证是否已定义了指定的属性,并且该属性作为文件或目录在文件系统中存在。

<project default="init">

  <property file="test.properties"/>

  <target name="init">
    <validate-file-property property="program.files" type="dir"/>
    <validate-file-property property="mydata.root" type="dir"/>
    <validate-file-property property="foo"/>
  </target>

  <macrodef name="validate-file-property">
    <attribute name="property"/>
    <attribute name="type" default="file"/>
    <sequential>
      <fail unless="@{property}" message="The property '@{property}' is undefinded."/>
      <available file="${@{property}}" property="@{property}.exists" type="@{type}"/>
      <fail unless="@{property}.exists" message="The @{type} '@{property}' with value '${@{property}}' does not exist."/>
    </sequential>
  </macrodef>

</project>

您需要确定何时验证属性,并且需要显式验证它们-如init本示例中的目标所示。

顺便说一句,如果你使用一个标准化的模式,其参考文件或目录名称的属性-例如my.special.filemy.build.dir-那么你可以使用一个shell脚本,发现所有相关的属性和编写所有的validate-file-property元素。像这样:

awk -F= '/\.(file|dir)/{ printf "<validate-file-property property=\"%s\" type=\"%s\"/>\n", $1, gensub(/.*\.(file|dir)/, "\\1", "g", $1) }' *.properties

您可以将输出粘贴到构建文件中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章