Проект Maven с несколькими исходными каталогами

Проект Maven с несколькими исходными каталогами

1. Вступление

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

В этой короткой статье мы покажем, какset up Maven to work with additional source directories.

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

Предполагая, что у нас уже есть проект Maven, давайте добавим новый исходный каталог с именемanother-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();
    }
}

Структура нашего проекта теперь выглядит так:

image

If we try to compile this project with Maven we get a compilation error, потому что классFoo не включен в проект:

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

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

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

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

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


    org.codehaus.mojo
    build-helper-maven-plugin
    3.0.0
    
        
            generate-sources
            
                add-source
            
            
                
                    src/main/another-src
                
            
        
    

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

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

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

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

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