Maven Appassembler插件-标准输出和/或标准错误重定向



我正在将一个java项目迁移到Maven中,我们正在使用Appassembler Maven插件(版本1.3)来生成shell启动脚本。我的问题是如何重定向标准输出和/或java程序的输出?Appassembler的pom.xml配置

        <program>
          <mainClass>com.mycompany.app.App</mainClass>
          <commandLineArguments>
            <commandLineArgument>arg1</commandLineArgument>
            <commandLineArgument>arg2</commandLineArgument>
          </commandLineArguments>
          <name>app</name>
        </program>

生成:

exec "$JAVACMD" $JAVA_OPTS 
  $EXTRA_JVM_ARGUMENTS 
  -classpath "$CLASSPATH" 
  -Dapp.name="app" 
  -Dapp.pid="$$" 
  -Dapp.repo="$REPO" 
  -Dbasedir="$BASEDIR" 
  com.mycompany.app.App 
  arg1 arg2 "$@"

参数占位符($@)是开始脚本中最后生成的标记。

找到了解决这个问题的方法。幸运的是,参数占位符与生成的命令行参数在同一行。那么这个pom。xml配置:

<commandLineArguments>
    <commandLineArgument>"$@"</commandLineArgument>
    <commandLineArgument>&gt;&gt;out.log</commandLineArgument>
    <commandLineArgument>2&gt;&amp;1</commandLineArgument>
    <commandLineArgument>#</commandLineArgument>
</commandLineArguments>

将生成以下脚本:

....
com.mycompany.app.App 
"$@" >>out.log 2>&1 # "$@"

Hash在bash中是注释,所以最后一个参数占位符将被忽略,这个hack将执行重定向工作。

相关内容

  • 没有找到相关文章

最新更新