我创建了 ant 目标,它应该删除文件的底行,然后将其回显到不同名称的文件。我用于目标的代码是:
<loadfile srcfile="/dir/example/file.txt" property="last.line.removed">
<filterchain>
<filterreader classname="org.apache.tools.ant.filters.TailFilter">
<param name="lines" value="-1"/>
<param name="skip" value="1"/>
</filterreader>
</filterchain>
</loadfile>
<echo message="${last.line.removed}" file="/dir/example/file2.txt" append="true"/>
我已经在构建中自行运行了这个目标,它只是回显原始文件而不是删除底线。
如果有人能告诉我为什么这不起作用或更好的方法,那么将不胜感激。
我无法复制这个问题...
例
运行代码会产生预期的结果(由 diff 命令演示(:
$ ant
$ diff src/file.txt target/file.txt
2d1
< how are you?
项目文件
├── build.xml
├── src
│ └── file.txt
└── target
└── file.txt
构建.xml
<project name="demo" default="build">
<target name="build">
<mkdir dir="target"/>
<loadfile srcfile="src/file.txt" property="last.line.removed">
<filterchain>
<filterreader classname="org.apache.tools.ant.filters.TailFilter">
<param name="lines" value="-1"/>
<param name="skip" value="1"/>
</filterreader>
</filterchain>
</loadfile>
<echo message="${last.line.removed}" file="target/file.txt" append="true"/>
</target>
<target name="clean">
<delete dir="target"/>
</target>
</project>
src/file.txt
hello world
how are you?
目标/文件.txt
hello world