应用JavaScript的未定义元素" split"在Ant属性

时间:2016-02-25 07:20:38

标签: javascript ant

以下是build.xml中的一些行:

<property file="${basedir}\Model\src\ModelBundle.properties"/>
<property name="fullVersion" value="${CurrentReleaseView.SL_0_4}"/>

<script language="javascript">
    arr = project.getProperty('fullVersion').split('\\.');
    project.setProperty('version', arr[0]+"."+arr[1]+"."+arr[2]);
</script>

<condition property="build_no" value="${env.BUILD_NUMBER}" else="0">
    <isset property="env.BUILD_NUMBER"/>
</condition>

稍后在build.xml中,我创建了一个manifest.mf文件:

<manifest file="${basedir}/src/META-INF/MANIFEST.MF">
    <attribute name="Manifest-Version" value="1.0" />
    <attribute name="Weblogic-Application-Version" value="${version}.${build_no}"/>
</manifest>

属性文件中CurrentReleaseView.SL_0_4的值为v3.10.0.1p

在开发环境中,清单文件按预期创建:

Weblogic-Application-Version : v3.10.0.0

但是在生产环境中,manifest.mf文件是使用:

创建的
Weblogic-Application-Version: v3.10.0.1p.undefined.undefined.0. 

我们正在使用Ant版本1.8.2。

有人可以帮我解决JavaScript的问题吗?

1 个答案:

答案 0 :(得分:0)

在以下一行......

arr = project.getProperty('fullVersion').split('\\.');

... split被称为......

split('\\.')

split'\\.')的参数是常规JavaScript字符串,而不是正则表达式。由于它是常规字符串,因此字符串实际上代表两个字符......

\.

因此,split('\\.')表示&#34;每次反斜杠(\)在句点(.)之前分割字符串。&#34;

在您的代码中,fullVersion不应包含反斜杠。如果是这种情况,您可能只想分割句点字符,以下对split的调用应该有效...

split('.')