Mavenでメッセージを表示する方法
1. 概要
場合によっては、Mavenの実行中に追加情報を出力したいことがあります。 ただし、Mavenビルドライフサイクルでコンソールに値を出力する組み込みの方法はありません。
このチュートリアルでは、がMavenの実行中にメッセージの印刷を有効にするプラグインについて説明します。 3つの異なるプラグインについて説明します。各プラグインは、選択した特定の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>
executionタグで目標とフェーズを定義しましょう。 さらに、ターゲットとechoメッセージを保持するconfigurationタグを追加します。
<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に対応する現在のロガーとリスナーにメッセージを送信します。 レベルを指定することもできます。これは、プラグインにメッセージをフィルタリングするログレベルを指示します。
タスクはまたすることができます
3. EchoMavenプラグイン
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>
前のプラグインの例で見たように、executionタグで目標とフェーズを宣言します。 次に、configurationタグを入力します。
<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 タグを使用して、ログが保存されるファイルへのパスを指定できます。 最後に、複数のメッセージを出力する場合は、メッセージごとに個別のexecutionタグを追加する必要があります。
4. GroovyMavenプラグイン
groovy-maven-plugin、を使用するには、pom.xmlに依存関係を設定する必要があります。
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<version>2.1.1</version>
</plugin>
さらに、executionタグにフェーズとゴールを追加しましょう。 次に、sourceタグをconfigurationセクションに配置します。 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でから入手できます。