Ant move将新行放在属性的末尾

com*_*oro 4 eclipse ant

我在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}"/>    
Run Code Online (Sandbox Code Playgroud)

版本显示没有换行符.在代码中我想使用移动任务的属性:

<move file="${dir}\file.exe"
      tofile="${outputdir}\output-${version}-xxx.exe" 
      overwrite="true" 
      force="true" />
Run Code Online (Sandbox Code Playgroud)

但它失败了

BUILD FAILED build.xml:26: Failed to copy path\file.exe to path\output_directory\output-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á)
Run Code Online (Sandbox Code Playgroud)

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

我哪里错了?这是房产本身吗?甚至添加线

<replaceregex pattern="&#10;" replace="" flags="s"/>    
Run Code Online (Sandbox Code Playgroud)

或其他尝试从属性中删除换行没有改变任何东西.

mar*_*ton 5

你需要剥离换行符,例如:

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

  <striplinebreaks />

</filterchain>
Run Code Online (Sandbox Code Playgroud)

如果您修改<echo>为:

<echo message="Version -${version}-"/>
Run Code Online (Sandbox Code Playgroud)

你会清楚地看到这种影响.