Ở bài trước, tôi đã hướng dẫn các bạn sử dung Maven với Eclipse. Trong bài này, tôi sẽ hướng dẫn các bạn xây dựng một dự án nhiều Module với Maven.
Giới thiệu project minh họa
Hãy xem mô hình minh họa dưới đây:
Trong ví dụ này tôi tạo ra 3 project:
- sample-multi-module-service: là một module chứa các service, nó cung cấp các phương thức cho các ứng dụng khác sử dụng. Module này được đóng gói thành các gói jar.
- sample-multi-module-web: là một mudule web sử dụng service. Module này được đóng gói thành các gói war.
- sample-multi-module-parent: đây là project cha của module service và module web. Project này làm nhiệm vụ đóng gói 2 module service và module web.
Tạo project
Tạo project cha
Tạo project rỗng, chỉ bao gồm file pom.xml.
Tạo project Java thông thường: Mở Eclipse -> File -> New -> Java Project
Nhập tên project: sample-multi-module-parent
Nhấn nút Finish, ta được một project như sau:
Chuyển project Java sang project Maven:
Nhấn phải chuột vào project MavenParent vừa được tạo -> Configure -> Convert to Maven Project
Nhập thông tin như bên dưới:
- Group Id: com.gpcoder
- Artifact Id: sample-multi-module-parent
- Version: 1.0.0-SNAPSHOT
- Packaging: pom
Ta được project như sau:
Tạo project cho mudule Service
File -> New -> Maven Project
Nhấn Next
Nhấn Next, và chọn Artifact Id là maven-archetype-quickstart. Eclipse sẽ tạo ra một Project Maven có cấu trúc của một ứng dụng java, và cấu hình đóng gói sang file jar.
Nhấn Next và nhập các thông số như bên dưới:
- Group Id: com.gpcoder
- Artifact Id: sample-multi-module-service
- Version: 1.0.0-SNAPSHOT
- Package: com.gpcoder
Nhấn Finish, ta được kết quả như sau:
Xóa file không cần thiết: App.java và AppTest.java.
Thêm 2 class Student.java và StudentService.java như sau:
Tạo project cho mudule Web
File -> New -> Maven Project
Nhấn Next
Nhấn Next, và chọn Artifact Id là maven-archetype-webapp. Eclipse sẽ tạo ra một Project Maven có cấu trúc của một ứng dụng web, và cấu hình đóng gói sang file war.
Nhấn Next và nhập các thông số như bên dưới:
- Group Id: com.gpcoder
- Artifact Id: sample-multi-module-web
- Version: 1.0.0-SNAPSHOT
- Package: com.gpcoder
Nhấn Finish, ta được kết quả như sau:
Khai báo sử dụng thư viện java web javax.servlet-api và sử dụng module service:
Sửa file index.jsp sử dụng module Service trong project như sau:
Khai báo Maven quan hệ giữa các Project
Hình dưới đây mô tả cấu hình Maven và quan hệ giữa các module (Project).
Mở file pom.xml của project sample-multi-module-service và sample-multi-module-service thêm vào:
<parent> <groupId>com.gpcoder</groupId> <artifactId>sample-multi-module-parent</artifactId> <version>1.0.0-SNAPSHOT</version> <relativePath>../sample-multi-module-parent</relativePath> </parent>
Mở file pom.xml của project sample-multi-module-parent và thêm vào:
<modules> <module>../sample-multi-module-service</module> <module>../sample-multi-module-web</module> </modules>
Đóng gói các module
Nhấn phải chuột vào project sample-multi-module-parent -> chọn Run As -> Maven Install
Tài liệu tham khảo: