Svn 使用Ant从exec输出筛选换行符
我们的项目有一个庞大而古老的Ant构建文件 几天前,其中一个目标被攻破。它调用Svn 使用Ant从exec输出筛选换行符,svn,ant,Svn,Ant,我们的项目有一个庞大而古老的Ant构建文件 几天前,其中一个目标被攻破。它调用svversion,并将版本写入.java文件。突然,字符串中出现换行,编译器因以下原因而抱怨: String version = "Foo bar"; 我对Ant没有什么经验,而且我很难理解文档。我想某种“过滤链”会起作用,但我无法让它发挥作用 以下是构建目标: <target name="svnversion"> <exec executable="svnversion" dir="${b
svversion
,并将版本写入.java文件。突然,字符串中出现换行,编译器因以下原因而抱怨:
String version = "Foo
bar";
我对Ant没有什么经验,而且我很难理解文档。我想某种“过滤链”会起作用,但我无法让它发挥作用
以下是构建目标:
<target name="svnversion">
<exec executable="svnversion" dir="${basedir}" outputproperty="svnversion">
<arg value="${basedir}"/>
<arg value="/dev/projects/${project.name}/trunk/"/>
</exec>
<echo message="svnversion ${svnversion}"/>
它在Windows上运行。我只想用零替换任何“\n”或“\n\r”
奇怪的是,如果我在cmd中手动运行svversion
,我在输出中看不到换行符
svnversion --help
...
Valid options:
-n [--no-newline] : do not output the trailing newline
只需将
-n
添加到命令行选项中就可以使用一种通用的方法基于修改后的exec outputproperty创建一个新属性,例如:<loadresource property="foo">
<propertyresource name="svnversion"/>
<filterchain>
<striplinebreaks/>
</filterchain>
</loadresource>
<!-- new property foo without linebreak -->
<echo>$${foo} => ${foo}</echo>
$${foo}=>${foo}
接受答案bc。简单,容易,使用正确的工具。不需要通过一些复杂的Ant标记。10/10会再次问;)