使用 pom 将 Maven 输出发送到控制台和日志文件

Send Maven output to console and log file using pom

问题: 运行在Eclipse 中使用Maven 时,如何将控制台输出发送到文件?

我想使用 pom 设置或 maven 插件来实现。我不想修改运行配置或maven系统设置。

作为参考,我正在使用 Windows 7,Eclipse Luna,Java 6,Maven 3。

转到 运行 并选择 Run Configuration -> Commons -> Select a file
这应该将您的输出重定向到您指定的文件。

根据this,您可以尝试编辑${MAVEN_HOME}/conf/logging/simplelogger.properties。我快速尝试了一下,maven 的输出被重定向了,但是任何其他写入 stdout(例如测试)的内容仍然写入控制台

根据 official command line options,您可以使用 -l,--log-file <arg>,它提供:

Log file where all build output will go.

因此,运行:

mvn clean install -l output.log

不会向控制台打印任何内容并自动将整个构建输出重定向到output.log文件。

如果你不想每次都输入它(或者你实际上不想使用命令行)并且你希望它作为默认选项(尽管我认为很少见),你可以使用 new命令行选项行为自版本 3.3.1 起可用,并且有一个 .mvn 文件夹,其中包含相关 pom.xml 文件和一个 maven.config 文件,其中仅提供以下行:

-l output.log

也就是说,.mvn/maven.config 文件仅针对其项目替换了 MAVEN_OPTIONS本地 在创建它的地方,使用它提供的选项,而不是根据 MAVEN_OPTIONS.

的 Maven 设置影响其他构建

这是一个 IDE 不可知的解决方案(它是 Maven 的一个新的内置功能)并且是项目本地的,但仍然不是通过简单的 POM 编辑提供的,这自第一阶段以来就无法实现Maven default life cycle phasesvalidate,即:

validate the project is correct and all necessary information is available

也就是说,在构建期间,因此当构建已经开始(并生成输出)时,它会验证pom.xml文件,因此为时已晚重定向在那个阶段基于一些 POM properties/plugin.

构建输出

如何创建 M2E 的分支并修改它以从 pom.xml

读取启动配置的输出文件

https://github.com/eclipse/m2e-core.git

一种可能的解决方案是在 mvn file 中设置输出格式。例如,在目录 /usr/bin 中,添加所需的输出,告知日志将在 exec "$JAVACMD" \ 行末尾保存的路径:| tee /home/maven-log.log.

但是,只有在终端线调用maven时才有效;当被 IDE(如 eclipse)调用时,此解决方案不起作用。