1. 概要

このチュートリアルでは、MavenベースのJavaプロジェクトに複数のソースディレクトリを追加する方法について説明します。

2. 追加のソースディレクトリ

src /main内に/newsrcソースディレクトリを追加する必要があると仮定します。

まず、 src / main / newsrc/フォルダー内に単純なJavaクラスファイルDataConnection。javaを作成しましょう。

public class DataConnection {

    public static String temp() {
        return "secondary source directory";
    }
}

その後、 src / main / java ディレクトリに、他のフォルダに作成されたDataConnectionクラスを使用する別のクラスファイルを作成しましょう。

public class MainApp {
    public static void main(String args[]){
        System.out.println(DataConnection.temp());
    }
}

Mavenプロジェクトをコンパイルする前に、プロジェクトの構造を簡単に見てみましょう。

ここで、コンパイルしようとすると、コンパイルエラーが発生します

[ERROR] BuilderHelper/src/main/java/com/baeldung/maven/plugin/MainApp.java:[3,29] package com.baeldung.database does not exist
[ERROR] BuilderHelper/src/main/java/com/baeldung/database/MainApp.java:[9,28] cannot find symbol
[ERROR] symbol: variable DataConnection
[ERROR] location: class com.baeldung.MainApp

エラーメッセージの根本的な原因を理解できます。一般的なプロジェクトディレクトリ構成の外部でDataConnectionクラスを定義しました。

Mavenはデフォルトで1つのソースフォルダーのみをサポートします。 複数のソースディレクトリを設定するには、build-helper-maven-pluginというMavenプラグインを使用する必要があります。

3. build-helper-maven-pluginを使用してソースディレクトリを追加します

上記のエラーを解決するために、build-helper-maven-pluginを使用してソースディレクトリを追加します。 このプラグインは、最小限の構成で目標を達成するのに役立ちます。

src / main フォルダの隣に兄弟ディレクトリがあるので、2番目のソースディレクトリを追加します。

  <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <id>add-source</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>add-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>src/main/newsrc/</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

ここでは、generate-sourcesフェーズでadd-sourceゴールを実行しています。 また、configuration.sources.sourceタグでソースディレクトリを指定しました。

ご存知のとおり、Mavenのデフォルトのライフサイクルには、コンパイル前にいくつかのフェーズが含まれています。 generate-resources process-resources 、およびcompile。 したがって、ここでは、Mavenがソースコードをコンパイルする前に、新しいソースディレクトリを追加しています。

次に、プロジェクトをコンパイルすると、ビルドが成功します。 この後、ターゲットフォルダを確認すると、プラグインが両方のソースディレクトリからクラスを生成していることがわかります

このプラグインの最新バージョンは、 MavenCentralにあります。 この例ではソースディレクトリを1つだけ追加しましたが、プラグインを使用すると、必要な数だけ追加できます

4. 結論

このチュートリアルでは、build-helper-maven-pluginを使用して複数のソースディレクトリを追加する方法を学びました。

いつものように、例の完全なソースコードは、GitHubから入手できます。