gpt4 book ai didi

windows - 回显到文件时 Ant 不会创建 NL

转载 作者:可可西里 更新时间:2023-11-01 09:25:36 27 4
gpt4 key购买 nike

我最初有这个:

<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&#13;&#10;
This is line #2&#13;&#10;
This is line #3&#13;&#10;
</echo>

得到:

 This is line#1This is line #2This is line#3

我什至试过这个:

 <concat destfile="${my.file}">
This is line #1&#13;&#10;
This is line #2&#13;&#10;
This is line #3&#13;&#10;
</concat>

还有:

 This is line#1This is line #2This is line#3

如果我对控制台执行任何这些操作,它会打印在不同的行上。将它们保存到一个文件中,这些行不会显示。

我在 Win7,Ant 1.8 什么的。

有什么想法吗?


Windows 东西?

我已经在我的 Mac 上尝试了其中的每一个。第一个给了我相同的结果。但是,第二种方式在文件中给了我三行。第三种方式与${line.separator}添加跳过每隔一行。第四种方式使用&#13;&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>会引起问题。顺便说一句,有时它太坏了,我需要重新打开一个新的控制台窗 Eloquent 能获得 NL工作的东西。

我以前遇到过类似的问题,这是 Windows 代码页问题。

最佳答案

下面的 Ant 项目使用 echo 任务创建了四个文件:

  • echo1.txt
  • echo2.txt
  • echo3.txt
  • echo4.txt

项目在Windows 7上使用Ant 1.8.x运行时,各个文件的十六进制 View 如下:

// echo1.txt
// HEX // TEXT
6c 69 6e 65 20 23 31 line #1
6c 69 6e 65 20 23 32 line #2
6c 69 6e 65 20 23 33 line #3

// echo2.txt
// HEX // TEXT
6c 69 6e 65 20 23 31 0a line #1 (0a => line feed)
6c 69 6e 65 20 23 32 0a line #2
6c 69 6e 65 20 23 33 0a line #3

// echo3.txt
// HEX // TEXT
6c 69 6e 65 20 23 31 0d 0a 0a line #1 (0d => carriage return)
6c 69 6e 65 20 23 32 0d 0a 0a line #2
6c 69 6e 65 20 23 33 0d 0a 0a line #3

// echo4.txt
// HEX // TEXT
6c 69 6e 65 20 23 31 0d 0a line #1
6c 69 6e 65 20 23 32 0d 0a line #2
6c 69 6e 65 20 23 33 0d 0a line #3

只有 echo4.txt [它将所有三行放在 message 属性中,由 ${line.separator} 分隔] 产生正确的行结束在 Windows 上(回车+ 换行)。在记事本(使用回车 + 换行)以及保留 Unix 行结尾的编辑器(单换行)中编辑项目文件时,输出是相同的。看起来,当 Ant 解析 XML 文件时,行结尾被规范化为单个换行符。

Ant 计划

<?xml version="1.0" encoding="UTF-8"?>
<project name="echo-project" basedir="." default="echo-all">

<target name="echo-test1">
<property name="echo1.file" location="${basedir}/echo1.txt" />
<echo file="${echo1.file}" message="line #1" />
<echo file="${echo1.file}" message="line #2" append="true" />
<echo file="${echo1.file}" message="line #3" append="true" />
</target>

<target name="echo-test2">
<property name="echo2.file" location="${basedir}/echo2.txt" />
<echo file="${echo2.file}">line #1
line #2
line #3
</echo>
</target>

<target name="echo-test3">
<property name="echo3.file" location="${basedir}/echo3.txt" />
<echo file="${echo3.file}">line #1${line.separator}
line #2${line.separator}
line #3${line.separator}
</echo>
</target>

<target name="echo-test4">
<property name="echo4.file" location="${basedir}/echo4.txt" />
<echo file="${echo4.file}" message=
"line #1${line.separator}line #2${line.separator}line #3${line.separator}" />
</target>

<target name="echo-all"
depends="echo-test1, echo-test2, echo-test3, echo-test4" />
</project>

关于windows - 回显到文件时 Ant 不会创建 NL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11836703/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com