Dự án Maven với nhiều thư mục nguồn

1. Giới thiệu

Đôi khi chúng ta cần sử dụng nhiều thư mục nguồn trong một dự án Java. Một ví dụ trường hợp phổ biến khi có các lớp được tạo tự động và được đặt trong một thư mục khác.

Trong bài viết ngắn này, chúng tôi sẽ chỉ ra cách thiết lập Maven để làm việc với các thư mục nguồn bổ sung .

2. Thêm một thư mục nguồn khác

Giả sử chúng ta đã tạo một dự án Maven, hãy thêm một thư mục nguồn mới có tên là another-src trong thư mục src / main .

Sau đó, hãy tạo một lớp Java đơn giản bên trong thư mục này:

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

Bây giờ hãy tạo một lớp khác trong thư mục src / main / java của chúng ta sử dụng lớp Foo mà chúng ta vừa tạo:

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

Cấu trúc dự án của chúng tôi bây giờ trông như thế này:

Nếu chúng tôi cố gắng biên dịch dự án này với Maven, chúng tôi sẽ gặp lỗi biên dịch vì lớp Foo không được bao gồm trong dự án:

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

3. Sử dụng Plugin trình trợ giúp người xây dựng

Với Maven, chúng ta có thể sử dụng plugin Builder Helper để thêm nhiều thư mục nguồn hơn. Plugin này cho phép chúng tôi tùy chỉnh vòng đời của bản dựng theo những cách khác nhau.

Một trong những mục tiêu của nó là các nguồn bổ sung , nhằm mục đích thêm nhiều thư mục src vào dự án trong giai đoạn tạo nguồn .

Chúng ta có thể sử dụng nó trong dự án của mình bằng cách thêm nó vào pom.xml :

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

Bạn có thể tìm thấy phiên bản mới nhất của plugin tại Maven Central.

Nếu bây giờ chúng tôi biên dịch dự án của mình, thì việc xây dựng sẽ thành công.

4. Kết luận

Chúng ta đã thấy trong bài viết này cách thiết lập plugin Builder Helper Maven để hoạt động với nhiều thư mục src trong một dự án Maven.

Như mọi khi, mã nguồn đầy đủ của các ví dụ có sẵn trên GitHub.