Ở 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-servicesample-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: