Проект Maven с множество директории с източници

1. Въведение

Понякога трябва да използваме множество директории с източници в проект на Java. Често срещан пример, когато има класове, които се генерират автоматично и се поставят в различна директория.

В тази кратка статия ще покажем как да настроите Maven да работи с допълнителни директории на източника .

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(); } }

Структурата на нашия проект сега изглежда така:

Ако се опитаме да компилираме този проект с 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, за да добавим още директории с източници. Този плъгин ни позволява да персонализираме жизнения цикъл на компилацията по различни начини.

Една от целите му е добавянето на източници , което има за цел да добави повече src директории към проекта по време на фазата на генериране на източници .

Можем да го използваме в нашия проект, като го добавим към нашия 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.

Както винаги, пълният изходен код на примерите е достъпен в GitHub.