1. 概要

場合によっては、Mavenの実行中に追加情報を出力したいことがあります。 ただし、Mavenビルドライフサイクルでコンソールに値を出力する組み込みの方法はありません。

このチュートリアルでは、がMavenの実行中にメッセージの印刷を有効にするプラグインについて説明します。 3つの異なるプラグインについて説明します。各プラグインは、選択した特定のMavenフェーズにバインドできます。

2. AntRunプラグイン

まず、AntRunプラグインについて説明します。 Maven内からAntタスクを実行する機能を提供します。 プロジェクトでプラグインを使用するには、maven-antrun-pluginpom.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に対応する現在のロガーとリスナーにメッセージを送信します。 レベルを指定することもできます。これは、プラグインにメッセージをフィルタリングするログレベルを指示します。

タスクはまたすることができますファイルにエコーします。 ファイルに追加するか、ファイルを設定して上書きすることができます追加に属性真実また間違い 、 それぞれ。 ファイルにログインすることを選択した場合は、ロギングlevelを省略する必要があります。 fileタグでマークされたメッセージのみがファイルに記録されます。

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から入手できます。