如何将Maven的输出日志保存到文件中,并且不隐藏在控制台?

19
我想将Maven的输出保存到文件中,但不要失去控制台上的输出。由于我在Windows下运行,并且我不想将二进制文件tee.exe添加到源代码树中,因此不能使用tee命令。

3
关于这个问题,实际上并没有与Maven相关的内容。如果您想知道如何将命令行输出同时重定向到文件和控制台,请在SuperUser.com上提问。请注意不要改变原文的意思。 - Sean Patrick Floyd
2
这是针对Maven的特定问题,看起来Maven目前还不支持此功能,这对于构建系统来说真的很丑陋。 - sorin
7个回答

10
如果你正在使用Linux操作系统,可以使用下面的命令: mvn install -X | tee log.txt 该命令用于安装Maven项目并将详细的日志输出到log.txt文件中。

1
我的意思是它不会打印到控制台。log.txt 文件没问题。 - Sridhar Sarnobat
2
@Sridhar-Sarnobat 我期望通过传递你告诉Maven(mvn)保存日志到文件而不是默认位置(在我的系统上为'System.out')的命令。这就是为什么你没有得到控制台输出的原因。只需在保存到文件时查看日志文件即可。顺便说一句 - 如果需要,可以通过${MAVEN_HOME}/conf/logging/simplelogger.properties文件更改默认日志记录位置。如果需要,这里是一个链接:https://maven.apache.org/maven-logging.html - Zack Jannsen
1
@ZackJannsen 不是真的。其他命令都能正常工作。但还是谢谢你的回复。 - Sridhar Sarnobat
“-X” 是什么意思? - anatoly techtonik
-X 用于调试模式日志记录。 - Varun
tee命令在Windows上也是可用的。它在Cygwin软件包中。可能需要手动选择tee。 - JRr

7
现在可以重定向Maven 3命令输出。在Windows上,如下所示:
mvn -X install  > test.log

这将把命令输出重定向到当前目录中的test.log文件。

3
我认为这并不能解决同时将其转储到控制台的问题,这就是他想使用tee的原因。 - Sridhar Sarnobat
这只是将内容写入日志文件,不会在控制台上显示任何内容。 - undefined

3

因为您说您正在使用Windows系统。在PowerShell中有一个名为Tee-Object的命令。我运行Maven时需要这样写:(请注意,在PowerShell中,您需要将整个-Dexec.args用引号括起来)。

mvn exec:java "-Dexec.mainClass=com.proj.main" "-Dexec.args=arg0 arg1" | Tee-Object -FilePath output.log

这应该是Windows操作系统的被接受的答案。 - undefined

3
截至今日,maven2不支持此功能。

2
在另一个控制台中使用tail命令: tail -f 日志文件名

2
使用Powercmd。 它的功能类似于普通的命令提示符,但还具有一些额外的功能,如自动记录屏幕上的所有内容、多个窗口、快捷方式。

2

使用:

> 文件名

在您的mvn命令结尾处加上这个,将输出发送到文件,然后使用类似wintail的工具来追踪该文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接