Ant move将换行符放在属性的末尾



我在Eclipse中有一个Ant任务从文件中获取版本:

<loadfile property="version" srcfile="version.txt">
  <filterchain>
    <linecontainsregexp>
      <regexp pattern="^#define version .(d{1,10}).(d{1,10}).(d{1,10}).(d{1,10})."/>
    </linecontainsregexp>
    <replaceregex 
         pattern="^#define version .(d{1,10}).(d{1,10}).(d{1,10}).(d{1,10})..*$" 
         replace="1.2.3.4" />
  </filterchain>
</loadfile>  
<echo message="Version ${version}"/>    

显示不带换行符的版本。进一步在代码中,我想使用属性与移动任务:

<move file="${dir}file.exe"
      tofile="${outputdir}output-${version}-xxx.exe" 
      overwrite="true" 
      force="true" />

但是由于消息

,它失败了
BUILD FAILED build.xml:26: Failed to copy pathfile.exe to pathoutput_directoryoutput-1.0.0.0
-xxx.exe due to output-1.0.0.0
-xxx.exe (Název souboru či adresáře nebo jmenovka svazku je nesprávná)

(最后一行表示文件名无效,显然中间包含换行符)

我哪里错了?是财产本身吗?甚至加上

一行
<replaceregex pattern="&#10;" replace="" flags="s"/>    

或其他从属性中删除换行符的尝试不会改变任何内容。

你需要去掉换行符,例如:

<filterchain>
  <linecontainsregexp ... />
  <replaceregex ... />
  <striplinebreaks />
</filterchain>

如果您将<echo>修改为:

<echo message="Version -${version}-"/>

你会清楚地看到效果

相关内容

  • 没有找到相关文章

最新更新