可以在Apache Ant build.xml文件中跨多行拆分字符串吗?

时间:2015-02-10 02:01:55

标签: java xml ant

我的一个Apache Ant build.xml文件中有以下代码段。

    <property
        name  = "classpath"
        value = "${dir_google_api_libs}/google-http-client-1.19.0.jar:"
                "${dir_google_api_libs}/google-http-client-jackson2-1.19.0.jar:"
                "${dir_google_api_libs}/jackson-core-2.1.3.jar"
    />

但是,如果我尝试在此build.xml文件上调用Apache Ant,它(Ant)会有效地抱怨字符串被分割成多行。它给我的确切信息是;

  

org.xml.sax.SAXParseException;的systenId:   文件:/home/craig/source_code/java/Test_JsonFactory/build.xml;   lineNumber:78; columnNumber:11;元素类型&#34;属性&#34;一定是   其次是属性规范,&#34;&gt;&#34;或&#34; /&gt;&#34;。

有人知道是否有办法完成我想要做的事情,即将字符串分成多行?我厌恶在我的build.xml文件中有这样的长行,并且当它垂直定向并分割成多行时,发现分析代码要容易得多。

1 个答案:

答案 0 :(得分:2)

您拥有的不是格式良好的XML,因此不适用于任何XML应用程序。

以下XML格式正确,并展示了如何分解您的长行:

<property
    name  = "classpath"
    value = "${dir_google_api_libs}/google-http-client-1.19.0.jar:
             ${dir_google_api_libs}/google-http-client-jackson2-1.19.0.jar:
             ${dir_google_api_libs}/jackson-core-2.1.3.jar"
    />

但请注意,在@value内使用换行符的上述XML与下面的XML相同,并且@value内没有换行符,将取决于应用程序:

<property
    name  = "classpath"
    value = "${dir_google_api_libs}/google-http-client-1.19.0.jar:${dir_google_api_libs}/google-http-client-jackson2-1.19.0.jar:${dir_google_api_libs}/jackson-core-2.1.3.jar"
    />

对于Apache Ant,我没有测试过上面的多行版本,但即使它确实有效,我也不会推荐它。相反,我建议使用path元素:

<path id="classpath">
  <pathelement path="${dir_google_api_libs}/google-http-client-1.19.0.jar"/>
  <pathelement path="${dir_google_api_libs}/google-http-client-jackson2-1.19.0.jar"/>
  <pathelement path="${dir_google_api_libs}/jackson-core-2.1.3.jar"/>
</path>