Groovy进程输出的顺序不正确

jucafojl  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(203)

我经历了以下几点:

我已经尝试了以下网址中提到的解决方案:

groovy脚本没有按照正确的顺序打印输出。

final String command = "cmd /c mvn -e --no-transfer-progress clean compile -Psome-profile"    
ProcessBuilder processBuilder = new ProcessBuilder(command.split())                                    
processBuilder = processBuilder.redirectErrorStream(true)                                              
final Process proc = processBuilder.start()                                                            
proc.waitForProcessOutput(System.out, System.err)

输出的顺序不正确:

[WARNING] D:\checkstyle\src\main\java\com\puppycrawl\tools\checkstyle\checks\imports\ImportControlLoader.java:[185,78] [argument] incompatible argument for parameter parent of FileImportControl.
  found   : @Initialized @Nullable PkgImportControl
[WARNING]
  required: @Initialized @NonNull PkgImportControl

而它应该是:

[WARNING] D:\checkstyle\src\main\java\com\puppycrawl\tools\checkstyle\checks\imports\ImportControlLoader.java:[185,78] [argument] incompatible argument for parameter parent of FileImportControl.
  found   : @Initialized @Nullable PkgImportControl
  required: @Initialized @NonNull PkgImportControl
[WARNING]................

Groovy版本:

Groovy Version: 2.5.18 JVM: 11.0.16.1 Vendor: Azul Systems, Inc. OS: Windows 11

**注意:**这个特殊的maven命令需要很长时间来执行,并在最后转储日志(不连续),这是导致上述问题的一个因素,任何帮助都将非常感谢。

更新:
已将groovy版本升级到:

Groovy Version: 4.0.5 JVM: 11.0.16.1 Vendor: Azul Systems, Inc. OS: Windows 11

还是不能正常工作。

jv2fixgn

jv2fixgn1#

尝试使用cmd将标准错误重定向到标准输出:

String [] command = [
    "cmd", "/c", 
    "mvn -e --no-transfer-progress clean compile -Psome-profile 2>&1"
]
ProcessBuilder processBuilder = new ProcessBuilder(command)
Process proc = processBuilder.start()
proc.waitForProcessOutput(System.out, System.err)

相关问题