«1. Введение

Иногда нам нужно использовать несколько исходных каталогов в проекте Java. Типичный пример, когда есть классы, которые генерируются автоматически и помещаются в другой каталог.

В этой короткой статье мы покажем, как настроить Maven для работы с дополнительными исходными каталогами.

2. Добавление еще одного исходного каталога

Предполагая, что у нас уже есть проект Maven, давайте добавим новый исходный каталог с именем other-src в папку src/main.

После этого давайте создадим простой класс Java внутри этой папки:

public class Foo {
    public static String foo() {
        return "foo";
    }
}

Теперь давайте создадим еще один класс в нашем каталоге src/main/java, который использует только что созданный класс Foo:

public class MultipleSrcFolders {
    public static void callFoo() {
        Foo.foo();
    }    
}

~ ~~ Структура нашего проекта теперь выглядит следующим образом:

Если мы попытаемся скомпилировать этот проект с помощью Maven, мы получим ошибку компиляции, потому что класс Foo не включен в проект:

[ERROR] .../MultipleSrcFolders.java:[6,9] cannot find symbol
[ERROR]   symbol:   variable Foo
[ERROR]   location: class com.baeldung.maven.plugins.MultipleSrcFolders

3. Использование Builder Helper Плагин

С Maven мы можем использовать плагин Builder Helper, чтобы добавить больше исходных каталогов. Этот плагин позволяет нам по-разному настраивать жизненный цикл сборки.

Одной из его целей является add-sources, который предназначен для добавления дополнительных каталогов src в проект на этапе генерации-источников.

Мы можем использовать его в нашем проекте, добавив в наш pom.xml:

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

Последнюю версию плагина можно найти в Maven Central.

Если мы сейчас скомпилируем наш проект, сборка завершится успешно.

4. Заключение

В этой статье мы рассмотрели, как настроить плагин Builder Helper Maven для работы с несколькими каталогами src в проекте Maven.

Как всегда, полный исходный код примеров доступен на GitHub.