Trước hết phải đảm bảo rằng bạn đã cài đặt Maven vào Eclipse. Nếu chưa cài đặt bạn có thể xem hướng dẫn tại đây:Ở trên bạn đã tạo project và chạy hoàn hảo. Project của bạn sử dụng class StringUtils, nó là một class của Apache, vốn không nằm trong thư viện chuẩn JDK của Java. Theo truyền thống bạn phải copy thư viện vào Project và khai báo ClassPath. Tuy nhiên, trong hướng dẫn này hoàn toàn không phải copy thư viện và khai báo classpath như cách truyền thống. Việc quản lý thư viện đã do Maven quản lý. Bây giờ chúng ta sẽ giải thích cách mà Maven hoạt động:
Trang 1Thành viên Tô Thành Đồng nhận công việc gồm:
- Cài đặt Maven
- Nghiên cứu các tính năng của Maven và cách thức xây dựng kịch bản biên dịch, đóng gói và quản lý cấu hình phần mềm
Thành viên đã tìm hiểu:
-Maven:
Apache Maven là không chỉ dừng lại ở mức độ là một build tool bình thường mà quan trọng hơn nó là một dependency manager cung cấp cho người lập trình viên
có thể khai báo và quản lý sự phụ thuộc giữa các thành phần trong bản thân các ứng dụng phần mềm Bài viết này sẽ giới thiệu về Apache Maven và các đặc điểm
cơ bản đặc trưng của nó
Chương I Cài đặt Maven
Phương pháp 1: Cài đặt Maven độc lập trên Windows và khai báo để Eclipse có thể sử dụng nó.
1 Vào trang chủ của Maven và vào mục download, sau đó chọn bản Maven tương ứng với hệ điều hành (Window, Linux) Bài viết này sẽ hướng dẫn cách cài đặt Maven trên Window, bạn hãy down file zip về sau đó giải nén ra như thư mục dưới đây
Trang 22 Đặt biến môi trường M2_HOME trỏ đến thư mục và ta vừa extract ở trên, sau đó thêm vào biến Path đoạn %M2_HOME%\bin
3 Để biết được đã cài đặt thành công hay chưa, ta vào command line của window
và gõ mvn -version Nếu đã cài đặt thành công thì sẽ như dưới đây
Trang 3Phương pháp 2
Apache maven hiện nay đã được tích hợp sẵn vào trong eclipse và netbean ( trừ những bản rất cũ, mình khuyên các bạn không nên dùng những bản cũ này )
Chương II: Nghiên cứu các tính năng của Maven và cách thức xây dựng
kịch bản biên dịch, đóng gói và quản lý cấu hình phần mềm
1, Cấu trúc project được hỗ trợ bởi Maven
Maven là một buil tool và để đóng gói một ứng dụng thì Maven yêu cầu ứng dụng phải có cấu trúc mà Maven có thể hiểu được Bản thân Maven cung cấp nhiều các kiểu cấu cấu trúc ứng dụng mà ta có thể chọn lựa cho phù hợp với dụ án của mình Để tạo ra một ứng dụng có cấu trúc của Maven thì ta có thể làm như sau
1 Dùng command line gõ mvn archetype:generate một loạt các cấu trúc dự
án mẫu sẽ được hiển thị ra với số tương ứng như sau
Trang 42 Sau đó Maven sẽ hỏi về kiểu cấu trúc dự án mà bạn muốn tạo ra, bạn chỉ cần chọn ở danh sách bên trên và nhập số tương ứng Trong trường hợp không nhập gì và thì Maven sẽ tự động tạo ra dự án có cấu trúc theo kiểu
maven-archetype-quickstart
3 Mỗi một kiểu cấu trúc dự án có thể có nhiều version, ở đây ta sẽ chọn tiếp version 1.1 Mỗi một dự án trong Maven sẽ được nhận diện gồm 3 thành
phần groupId, artifactId và version, ngoài ra còn có thêm thông tin về package
Điền đủ các thông tin trên và sau đó xác nhận để tạo project
Trang 54 Sau khi tạo thành công ta sẽ thấy project được tạo ra trong thư mục như hình dưới đây:
Trang 62, Tìm hiểu file pom.xml
Như ta đã thấy trong hình trên, trong project được sinh ra có một file pom.xml
POM là viết tắt của “Project Object Model”, đây là nơi chứa các khai báo mô tả về project mà quan trọng hơn cả là khai báo các thành phần mà project phụ thuộc vào Các khai báo được thể hiện dưới dạng các thẻ XML bên trong thẻ <project> Sau đâu là một số các thẻ cơ bản mà ta có thể thấy trong bất cứ file pom.xml nào
<groupId>, <artifactId>, <version>: bộ ba thông tin để nhận diện ra một
thành phần
<packaging>: Định dạng khi đóng gói của thành phần, có thể là jar, war, ear
…
<properties>: là nơi khai báo các thuộc tính có thể sử dụng ở các nơi trong
file pom.xml Ví dụ ta khai báo thuộc
tính <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> , thì ở một nào đó trong pom.xml, ta có thể sử dụng giá trị UTF-8 bằng cách gọi ${project.build.sourceEncoding}
<dependency>: Bên trong sẽ khai báo thành phần mà project sẽ phụ thuộc
vào Ví dụ project có sử dụng JUnit để thực hiện unit test, thì việc project phụ thuộc vào junit sẽ được khai báo như sau
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
3, Cấu trúc của repository trong Maven
Maven quản lý các thành phần và lưu chúng ở trong repository Khi build
một project, các thành phần mà project phụ thuộc vào sẽ được lấy ra từ local
repository trên máy đang thực hiện quá trình build Nếu như thành phần (thư viện)
không được tìm thấy trên local repository thì Maven sẽ tự động download thành
phần này từ remote repository về local repository Vị trí của local repository mặc
định sẽ là ${user.home}/.m2/repository, ta hoàn toàn có thể thay đổi vị trí này bằng cách cấu hình trong file /conf/settings.xml như sau:
Trang 7localRepository>
Trong quá trình phát triển các ứng dụng, local repository sẽ được làm đầy dần, dưới đây là hình ảnh của một local repository với cách bố trí các thành phần bên trong nó
Như đã nói ở trên, mỗi thành phần sẽ được nhận diện bởi bộ
ba <groupId>, <artifactId>, <version>, và cấu trúc phân tầng của repository cũng dựa trên thứ tự này Ví dụ đối với bộ thư viện guava.jar của Google có thông tin như sau:
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>13.0.1</version>
Với thông tin trên thì bộ thư viện này được bố trí trong repository như sau
Trang 8Nhìn trên hình trên ta thấy
GroupId sẽ được chuyển thành các thư mục ví
dụ groupId là com.google.guava vậy tính từ thư mục repository, thư mục con sẽ là com/google/guava
ArtifactId sẽ tiếp tục được chuyển thành một thư mục con bên trong,
với artifactId là guava vậy đường dẫn sẽ trở thành com/google/guava/guava
Version sẽ cũng được chuyển thành một thư mục con bên trong nữa,
với version là 13.0.1, đường dẫn đến file thư viện sẽ
là com/google/guava/guava/13.0.1
Bên trong thư mục con nhất này sẽ là file thư viện guava-13.0.1.jar, tên của file thư viện sẽ là sự ghép lại của artifactId và version
Ngoài file thư viện ra ta còn có file guava-13.0.1.pom là file POM mô tả cho thư viện tương ứng bao gồm các thông tin về thư viện này và các thành phần khác mà thư viện này phụ thuộc vào
4,Tạo Maven Project
Trên Eclipse chọn " New/Other"
Trang 12Project đã được tạo ra.
Trang 13Mở file pom.xml để cấu hình các thư viện sẽ sử dụng:
File pom.xml là nơi khai báo tất cả những gì liên quan đến dự án được cấu hình qua maven, như khai báo các dependency, version của dự án, tên dự án, repossitory
Trong đó, 0.0.1-SNAPSHOT là version của project
Bây giờ chúng ta sẽ thử add 1 thư viện vào dự án, vd chúng ta sẽ add thư viện apache.commons Thêm thẻ khai báo vào file pom
Trang 14Hình minh họa ở trên chỉ ra cách hoạt động của Maven.
• Bạn khai báo trên pom.xml rằng project của bạn phụ thuộc vào thư viện common-lang3 phiên bản 3.3.2.
• Ngay sau khi bạn SAVE file pom.xml Maven sẽ kiểm tra xem thư viện này
đã có tại kho chứa địa phương (Local Repository) trên máy tính của bạn chưa Nếu chưa có nó sẽ download về từ kho chứa (Repository) thư viện từ trên Internet xuống
• Cuối cùng là Maven sẽ tự động khai báo ClassPath cho Project tới vị trí file jar được download về
• Như vậy mọi việc bạn chỉ cần khai báo thư viện muốn sử dụng tại pom.xml.
Việc quản lý thư viện đã do Maven lo liệu
Trang 15Lưu file pom lại và đợi project build xong, thư viện sẽ được add tự động vào project : (ở mục Maven Dependencies)
Biên dịch và đóng gói Project của bạn bằng Maven:
Nhấn chuột phải lên Project -> Run As -> Maven install -> chờ Maven biên dịch
và đóng gói xong -> Refresh lại project để xem kết quả:
Trang 16Kết quả thành công là :