1. 概述
有时,我们可能想在 Maven 执行过程中打印一些额外的信息。但是,在 Maven 构建生命周期中没有内置方法可以将值输出到控制台。
在本教程中,我们将探索 在 Maven 执行期间启用打印消息的 插件。我们将讨论三个不同的插件,每个插件都可以绑定到我们选择的特定 Maven 阶段。
2.AntRun插件
首先,我们将讨论 AntRun 插件。它提供了从 Maven 中运行 Ant 任务的能力。要在我们的项目中使用该插件,我们需要将 maven-antrun-plugin 添加到 pom.xml 中:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
让我们在 执行 标签中定义目标和阶段。此外,我们将添加包含带有 回显 消息的 目标的 配置 标签:
<executions>
<execution>
<id>antrun-plugin</id>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<echo message="Hello, world"/>
<echo message="Embed a line break: ${line.separator}"/>
<echo message="Build dir: ${project.build.directory}" level="info"/>
<echo file="${basedir}/logs/log-ant-run.txt" append="true" message="Save to file!"/>
</target>
</configuration>
</execution>
</executions>
我们可以 打印常规字符串以及属性值 。 echo 标签将消息发送到当前的记录器和侦听器,除非被覆盖,否则它们对应于 System.out 。 我们还可以指定一个 级别 ,它告诉插件应该在什么日志级别过滤 消息 。
该任务还可以 回显 到文件。 我们可以通过将 追加 属性分别设置为 true 或 false 来附加到文件或覆盖它。如果我们选择登录到文件,我们应该忽略日志 级别 。只有标有 文件 标签的消息才会记录到文件中。
3.Echo Maven 插件
如果我们不想使用基于 Ant*,* 的插件,我们可以将 echo-maven-plugin 依赖项添加到 pom.xml 中:
<plugin>
<groupId>com.github.ekryd.echo-maven-plugin</groupId>
<artifactId>echo-maven-plugin</artifactId>
<version>1.3.2</version>
</plugin>
就像我们在前面的插件示例中看到的那样,我们将在 执行 标记中声明目标和阶段。接下来,我们将填写 配置 标签:
<executions>
<execution>
<id>echo-maven-plugin-1</id>
<phase>package</phase>
<goals>
<goal>echo</goal>
</goals>
<configuration>
<message>
Hello, world
Embed a line break: ${line.separator}
ArtifactId is ${project.artifactId}
</message>
<level>INFO</level>
<toFile>/logs/log-echo.txt</toFile>
<append>true</append>
</configuration>
</execution>
</executions>
同样,我们可以打印简单的字符串和属性。我们还可以使用 level 标签设置日志级别。使用 toFile 标签,我们可以指示将保存日志的文件的路径。最后,如果我们想打印多条消息,我们应该为每条消息添加一个单独的 执行 标签。
4.Groovy Maven 插件
要使用 groovy-maven-plugin , 我们必须将依赖项放入 pom.xml 中:
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<version>2.1.1</version>
</plugin>
此外,让我们在 执行 标签中添加阶段和目标。接下来,我们将 源 标签放入 配置 部分。它包含 Groovy 代码:
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source>
log.info('Test message: {}', 'Hello, World!')
log.info('Embed a line break {}', System.lineSeparator())
log.info('ArtifactId is: ${project.artifactId}')
log.warn('Message only in debug mode')
</source>
</configuration>
</execution>
</executions>
与之前的解决方案类似,Groovy 记录器允许我们设置日志记录级别。从代码层面,我们也可以轻松访问Maven属性。此外,我们可以使用 Groovy 脚本将消息写入文件。
感谢 Groovy 脚本,我们可以 向消息添加更复杂的逻辑 。 Groovy 脚本 也可以从文件加载 ,因此我们不必用长的内联脚本来混淆 pom.xml 。
5. 结论
在这个快速教程中,我们了解了如何使用各种插件进行打印。我们描述了如何使用 maven-antrun-plugin 、 echo-maven-plugin 和 groovy-maven-plugin 进行打印。此外,我们还介绍了几个用例。
最后,本文的所有源代码都可以在 GitHub 上获得。