使用 pom 将 Maven 输出发送到控制台和日志文件
Posted
技术标签:
【中文标题】使用 pom 将 Maven 输出发送到控制台和日志文件【英文标题】:Send Maven output to console and log file using pom 【发布时间】:2017-02-09 11:36:56 【问题描述】:问题:在 Eclipse 中运行 Maven 时,如何将控制台输出发送到文件?
我想使用 pom 设置或 maven 插件来实现这一点。我确实不想修改运行配置或 maven 系统设置。
作为参考,我使用的是 Windows 7、Eclipse Luna、Java 6、Maven 3。
【问题讨论】:
你不能那样做,你的答案是唯一的出路。 Maven 在读取 POM 之前如何编写文件?还要考虑多模块项目,其中该配置只能在一个模块中。 尝试使用 AOP。通过在默认的 org.apache.maven.plugin.logging.Log 上应用切入点,成功地将日志重定向到文件。但是太多的努力是白费的。试一试。 【参考方案1】:根据official command line options,您可以使用-l,--log-file <arg>
,它提供:
所有构建输出的日志文件。
因此,运行:
mvn clean install -l output.log
不会将任何内容打印到控制台并自动将整个构建输出重定向到output.log
文件。
如果您不想每次都输入它(或者您实际上不想使用命令行)并且您希望它作为默认选项(尽管我认为很少见),您可以使用新的命令行选项行为自版本 3.3.1 起可用,并且有一个 .mvn
文件夹,相关的 pom.xml
文件所在的文件夹和其中的 maven.config
文件只需提供以下行:
-l output.log
也就是说,.mvn/maven.config
文件仅在其创建的本地项目中替换MAVEN_OPTIONS
,并使用它提供的选项,而不影响按照@的Maven设置的其他构建987654333@.
这是一个与 IDE 无关的解决方案(它是 Maven 的新内置功能)并且是项目本地的,但仍然不能通过简单的 POM 编辑提供,因为Maven default life cycle phases 的第一阶段是@987654334,所以无法实现@,其中:
验证项目是否正确,所有必要的信息都可用
也就是说,在构建期间,因此当构建已经开始(并生成输出)时,它会验证 pom.xml
文件,因此在该阶段重定向构建输出为时已晚一些 POM 属性/插件。
【讨论】:
即使登录Eclipse控制台窗口丢失了,这也是最合理的答案。【参考方案2】:运行并选择Run Configuration -> Commons -> Select a file
。
这应该将您的输出重定向到您指定的文件。
【讨论】:
这是一个很好的答案,但我正在寻找一些方法来通过仅修改 pom 来实现这一点。我已经更新了我的问题。【参考方案3】:根据this,您可以尝试编辑$MAVEN_HOME/conf/logging/simplelogger.properties
。我快速尝试了一下,maven 的输出被重定向了,但是写给stdout
的任何其他内容(例如测试)仍然会写在控制台上
【讨论】:
这是对的,但是我正在寻找一个不修改maven设置的解决方案。 是的,我希望您可以覆盖项目文件的<properties>
部分中的这些设置,但它似乎不起作用...【参考方案4】:
如何创建一个 M2E 的分支并对其进行修改以从 pom.xml 读取启动配置的输出文件
https://github.com/eclipse/m2e-core.git
【讨论】:
【参考方案5】:一个可能的解决方案是在mvn file
中设置输出格式。例如,在目录/usr/bin
中,在exec "$JAVACMD" \
行的末尾添加所需的输出,告知日志将保存的路径:| tee /home/maven-log.log.
但是,它仅在终端线调用 maven 时有效;当由 IDE(如 eclipse)调用时,此解决方案不起作用。
【讨论】:
以上是关于使用 pom 将 Maven 输出发送到控制台和日志文件的主要内容,如果未能解决你的问题,请参考以下文章