Перейти к основному содержимому

Как отобразить сообщение в Maven

· 3 мин. чтения

1. Обзор

Иногда нам может понадобиться напечатать дополнительную информацию во время выполнения Maven. Однако в жизненных циклах сборки Maven нет встроенного способа вывода значений на консоль.

В этом руководстве мы рассмотрим плагины, которые позволяют печатать сообщения во время выполнения Maven . Мы обсудим три разных плагина, каждый из которых может быть привязан к определенной фазе Maven по нашему выбору.

2. Плагин AntRun

Сначала обсудим плагин AntRun . Он предоставляет возможность запускать задачи Ant из Maven. Чтобы использовать плагин в нашем проекте, нам нужно добавить 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>

Мы можем печатать как обычные строки, так и значения свойств . Эхо - теги отправляют сообщения текущим регистраторам и слушателям, которые соответствуют System.out , если они не переопределены. Мы также можем указать уровень , который сообщает плагину, на каком уровне протоколирования он должен фильтровать сообщение .

Задача также может быть отражена в файле. Мы можем добавить к файлу или перезаписать его, установив для атрибута append значение 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 .