gpt4 book ai didi

java - Maven Appassembler 插件 - stdout 和/或 stderr 重定向

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:00 30 4
gpt4 key购买 nike

我正在将一个 java 项目迁移到 Maven 中,我们正在使用 Appassembler maven 插件(版本 1.3)生成 shell 启动脚本。我的问题是如何重定向 stdout 和/或 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 将完成重定向工作。

关于java - Maven Appassembler 插件 - stdout 和/或 stderr 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14408486/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com