我最初有这个:
<echo file="${my.file}"
message="This is line #1"/>
<echo file="${my.file}"
append="true"
message="This is line #2"/>
<echo file="${my.file}"
append="true"
message="This is line #3"/>
并在我的文件中得到了这个:
This is line#1This is line #2This is line#3
所以,我尝试了:
<echo file="${my.file}">
This is line #1
This is line #2
This is line #3
</echo>
并得到:
This is line#1This is line #2This is line#3
我这样做了:
<echo file="${my.file}">
This is line #1${line.separator}
This is line #2${line.separator}
This is line #3${line.separator}
</echo>
并得到:
This is line#1This is line #2This is line#3
我这样做了:
<echo file="${my.file}">
This is line #1
This is line #2
This is line #3
</echo>
并得到:
This is line#1This is line #2This is line#3
我什至试过这个:
<concat destfile="${my.file}">
This is line #1
This is line #2
This is line #3
</concat>
仍然得到:
This is line#1This is line #2This is line#3
如果我对控制台执行任何这些操作,它会打印在单独的行上。将它们保存到文件中,并且这些行不显示。
我在 Win7,Ant 1.8 上。
有任何想法吗?
窗户的东西?
我已经在我的 Mac 上尝试了这些。第一个给了我同样的结果。但是,第二种方式在文件中给了我三行。添加的第三种方式${line.separator}
每隔一行跳过。使用的第四种方式 &10;
给了我在最后的每一行^M
(毕竟,Mac 是 Unix,不使用 CRLF 结尾,而只是 LF)。
并且,使用<concat>
还创建了单独的行。
更多信息
我已将问题追溯到我的build.xml
文件中的以下代码段:
这如宣传的那样工作。也就是说,空白并NL
显示在结果文件中:
<target name="package"
depends="-resolve,compile"
description="Packaging of the artifact">
<!-- Build version.txt and let the user figure out how to use it -->
<mkdir dir="${target.dir}"/>
<echo file="${version.file}">
Jenkins Project: ${env.JOB_NAME}
Jenkins Build Number: ${env.BUILD_NUMBER}
Build Date: ${build.date}
</echo>
<!--
<antcall target="jar"/>
<antcall target="war"/>
<antcall target="ear"/>
-->
</target>
这不会:
<target name="package"
depends="-resolve,compile"
description="Packaging of the artifact">
<!-- Build version.txt and let the user figure out how to use it -->
<mkdir dir="${target.dir}"/>
<echo file="${version.file}">
Jenkins Project: ${env.JOB_NAME}
Jenkins Build Number: ${env.BUILD_NUMBER}
Build Date: ${build.date}
</echo>
<antcall target="jar"/>
<antcall target="war"/>
<antcall target="ear"/>
</target>
这些片段之间的唯一区别在于我在<antcall>
编写文件之后执行了三个任务。这三个 antcall 任务都有一个if
子句,因此它们可能会或可能不会根据设置的属性运行。这是我们开发团队的构建模板,所以我真的很想让它工作。
为什么<antcall>
' 会引起问题。顺便说一句,有时它太坏了,我需要重新打开一个新的控制台窗口才能让这些NL
东西正常工作。
我之前遇到过类似的问题,这是一个 Windows 代码页问题。