【问题标题】:Log statements in pom.xml or Tracking flow of Mavenpom.xml 中的日志语句或 Maven 的 Tracking flow
【发布时间】:2012-08-22 07:20:31
【问题描述】:

我是 Maven 新手,我正在努力掌握它。我已经阅读了初学者的教程并且能够理解基本的东西,但是我的项目中有一个复杂的 pom.xml 文件,我的下一个目标是理解它。

由于从初学者指南中获得的知识有限,我无法理解复杂的 pom.xml,因此我正在考虑在 pom.xml 中添加某种日志语句或寻找可以跟踪的替代方法pom.xml 中的执行流程,因为这将帮助我了解事情的进展情况。

【问题讨论】:

    标签: java maven pom.xml


    【解决方案1】:

    我相信 maven 中的调试选项生成的输出可能非常庞大且读取时间很长。我只将它用于一些特定的问题分析。

    对我来说,通过阅读并尝试理解特定部分作者的意图,它总是可以通过复杂的 pom.xml 文件(我认为可以在以下位置找到 pom.xml 元素的良好参考:http://maven.apache.org/pom.html) .

    之后运行构建后,您可以看到它执行了什么以及何时执行,并且您可以找到您之前学习的内容和它的实际工作方式之间的映射:)

    【讨论】:

      【解决方案2】:

      您可以使用maven-antrun-plugin 将一些日志消息打印到 maven 控制台,也可以指定要在其中打印消息的phase,请参见下面的代码(它转到插件部分)

      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>1.6</version>
          <executions>
              <execution>
                  <id>print-log</id>
                  <phase>initialize</phase>
                  <goals>
                      <goal>run</goal>
                  </goals>
                  <configuration>
                      <target>
                          <echo message="Your log message for project ${project.artifactId}" />
                      </target>
                  </configuration>
              </execution>
          </executions>
      </plugin>
      

      【讨论】:

      • 我可以在我的 pom 中的任何位置添加此日志语句,或者仅在 ant-run 插件范围内添加此日志语句。
      • 不,你不能在任何地方添加它——这不是 Maven 的工作方式。 Maven 使用插件来丰富其核心特性和附加功能。如果您告诉它,antrun 插件恰好能够打印日志语句。每个插件都有其目的(目标),打印日志很少是其中之一。然而,Maven 会记录其所有活动——您可以按照读取标准日志的操作顺序进行操作,如果您需要一些额外的调试信息,如此处所述,请使用 -X 或 --debug 标志。我可以知道您要记录什么样的信息吗?
      【解决方案3】:

      你可以从发布开始

      mvn -X install
      

      这将为您提供执行流程。

      根据mvn --help

      -X,--debug     Produce execution debug output
      

      如果您想查看所有依赖项、属性、插件、目录等,请尝试以下方法:

      mvn help:effective-pom
      

      【讨论】:

        【解决方案4】:

        我建议阅读更多关于Maven build lifecycle 的信息。 Maven不是类似脚本的构建自动化工具(如antmake)。这是一种不同的方法。日志应该不如./target 目录中生成的输出工件重要。

        【讨论】:

          猜你喜欢
          • 2013-08-05
          • 1970-01-01
          • 1970-01-01
          • 2016-06-06
          • 1970-01-01
          • 2016-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多