Java 使用Exec命令上的多行stdin的Ant构建
因此,我在OSGI框架之上构建了一个应用程序。我制作了一个用于自动安装的ant脚本:Java 使用Exec命令上的多行stdin的Ant构建,java,ant,Java,Ant,因此,我在OSGI框架之上构建了一个应用程序。我制作了一个用于自动安装的ant脚本: <target name="run" depends="build"> <exec executable="java"> <arg value="-jar" /> <arg value="bin/osgi.jar" /> <arg value="-console"
<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-jarbin/osgi.jar-console
。但我还需要将这些输入(如重定向器标记中所示)输入到stdin。不幸的是,除了第一行之外,该脚本无法工作(它只运行安装文件:./bin/gps.jar
)
如何使ant能够在多行中接受stdin?在ant看到值之前,XML解析器将XML属性中的换行符规范化为空格。您需要将它们转义为字符引用(&10;
或&xA;
):
如果您正在调用的程序能够处理每个命令前面的空格,那么您仍然可以在构建文件中很好地打印它
<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>
安装文件:./bin/gps.jar
安装文件:./bin/context-manager.jar
开始2
开始1
然后说
。元素内容中的换行符(与属性相反)将由解析器保留。为什么会被否决?
<property name="console.input">install file:./bin/gps.jar
install file:./bin/context-manager.jar
start 2
start 1</property>