echo
到文件时。 echo
在打印内容之前打印额外的标签。
我不希望这些标签在那里,为什么ant
这样做以及我如何阻止?
仅使用ant
和/或ant-contrib
。没别了。
<target
name="doThis">
<delete
file="${PATH}/install.bat"
failonerror="true">
</delete>
<touch file="${PATH}/install.bat"></touch>
<echo
file="${PATH}/install.bat"
level="verbose"
append="true"
message="if exist preinstall.bat call preinstall.bat${line.separator}">
</echo>
<foreach
trim="true"
target="printStuff"
param="stuffName">
<path>
<fileset dir="${basedir}/stuff/"></fileset>
</path>
</foreach>
</target>
<target
name="printStuff">
<basename file="${stuffName}" property="stuffNameSmall"/>
<echo
file="${PATH}/install.bat"
append="true"
level="verbose"
message="${stuffNameSmall}${line.separator}">
</echo>
</target>
当前正在打印的输出示例:
<tab><tab>filename
<tab><tab>filename
<tab><tab>filename
答案 0 :(得分:2)
我的预感:&lt; echo ...&gt;里面有2个标签字符&LT; /回波&GT; xml元素......
尝试:
<echo
file="${PATH}/install.bat"
append="true"
level="verbose"
message="${stuffNameSmall}${line.separator}" />
'echo'任务将打印出'message'属性值,以及嵌套文本节点内的所有内容。因此,如果您不需要打印额外的东西(比如多行ASCII艺术,哦,是的!),最好立即关闭标签。
答案 1 :(得分:0)
我建议使用groovy生成批处理脚本,而不是与ANT echo任务作斗争。
以下示例稍微复杂一些,因为我使用ivy来下载构建依赖项。
$ tree
.
|-- build.xml
|-- ivy.xml
`-- stuff
|-- script1
|-- script2
`-- script3
1 directory, 5 files
<project name="demo" default="generate-script" xmlns:ivy="antlib:org.apache.ivy.ant">
<target name="init">
<ivy:resolve/>
<ivy:cachepath pathid="build.path" conf="build"/>
<mkdir dir="build"/>
</target>
<target name="generate-script" depends="init">
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="build.path"/>
<fileset id="files" dir="stuff"/>
<groovy>
def batchScript = new File("build/install.bat")
batchScript.withWriter() { writer ->
writer.println "if exist preinstall.bat call preinstall.bat"
project.references.files.each {
def stuffFile = new File(it.toString())
writer.println stuffFile.name
}
}
</groovy>
</target>
<target name="clean">
<delete dir="build"/>
</target>
</project>
<ivy-module version="2.0">
<info organisation="org.myspotontheweb" module="demo"/>
<configurations>
<conf name="build" description="ANT tasks"/>
</configurations>
<dependencies>
<!-- Build dependencies -->
<dependency org="org.codehaus.groovy" name="groovy-all" rev="1.8.2" conf="build->default"/>
</dependencies>
</ivy-module>
这并不是使用常春藤的理由,但可以安装Maven Central提供的任何东西。
例如ant-contrib:
<dependency org="ant-contrib" name="ant-contrib" rev="1.0b3"/>