以下是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的问题吗?
答案 0 :(得分:0)
在以下一行......
arr = project.getProperty('fullVersion').split('\\.');
... split
被称为......
split('\\.')
split
('\\.'
)的参数是常规JavaScript字符串,而不是正则表达式。由于它是常规字符串,因此字符串实际上代表两个字符......
\.
因此,split('\\.')
表示&#34;每次反斜杠(\
)在句点(.
)之前分割字符串。&#34;
在您的代码中,fullVersion
不应包含反斜杠。如果是这种情况,您可能只想分割句点字符,以下对split
的调用应该有效...
split('.')