所以我在OSGI框架之上构建了一个应用程序。我为自动安装制作了一个ant脚本:
<target name="run" depends="build">
<exec executable="java">
<arg value="-jar" />
<arg value="bin/osgi.jar" />
<arg value="-console"/>
<redirector inputstring="
install file:./bin/gps.jar
install file:./bin/context-manager.jar
start 2
start 1" />
</exec>
</target>
实际上,它会运行java -jar bin/osgi.jar -console
。但我也需要输入那些输入(如redirector
标签所示)到stdin。不幸的是,除了第一行(它只运行install file:./bin/gps.jar
)
如何使ant能够在多行中接受stdin?
答案 0 :(得分:1)
在Ant甚至看到值之前,XML属性中的换行符由XML解析器标准化为空格。您需要将它们作为字符引用(
或

)转义:
<redirector inputstring="install file:./bin/gps.jar
install file:./bin/context-manager.jar
start 2
start 1
" />
如果您正在调用的程序可以处理每个命令前面的空格,那么您仍然可以在构建文件中打印这个
<redirector inputstring="install file:./bin/gps.jar

install file:./bin/context-manager.jar

start 2

start 1
" />
或者,将inputstring定义为属性
<property name="console.input">install file:./bin/gps.jar
install file:./bin/context-manager.jar
start 2
start 1</property>
然后说<redirector inputstring="${console.input}" />
。解析器将保留元素内容中的换行符(而不是属性)。