Trong những năm gần đây, phần mềm mã nguồn mở đang có nhưng bước phát triển nhanh chóng và đạt được những thành tựu to lớn góp phần quan trọng vào bước phát triển chung của nghành công nghệ thông tin. Đó thực sự là mảnh đất nhiều tiềm năng, sức hút và đầy hứa hẹn cho mọi đối tượng bao gồm từ các cá nhân, doanh nghiệp đến các tổ chức, chính phủ.

Trên thực tế, mỗi nền tảng mở là 1 thế giới rộng lớn, mới mẻ là và tiềm ẩn nhiều điều thú vị để khám phá. Nhưng việc tìm hiểu và nghiên cứu chúng rồi sau đó tích hợp vào sản phẩm hiện tại là một vấn đề tương đối khó khăn với đa số các developer. Các công cụ như Google, các diễn đàn, các blog công nghệ thường không mang lại hiệu quả như mong muốn. Có thể bằng cách nào đó bạn tìm được thư viện mong muốn, nhưng khong thể đảm bảo đó là 1 phiên bản ổn định không có lỗi. Hơn nữa các phiên bản được phát triển và release liên tục cho nên công việc quản lý, nâng cấp và bào trì chúng có thể làm nản lòng bất cứ 1 developer nào. Điều đó đặc biệt đúng với với các nền tảng, kiến trúc lớn như (Jboss, Spring, eXo Platform, Apache...)

Ảnh
Ảnh
Ảnh

Ảnh





Tích hợp các nền tảng mở vào project không phải là chuyện đơn giản...

Cho dù đến nay, các IDE tiên tiến(Eclipse, NetBeans, Intellidea, ...) đã tích hợp sẵn các plugin hỗ trợ khởi tạo các project từ đa số các framework phổ biến(Servlet, Struts, Hibernate), nhưng việc tích hợp các thư viện mới cũng như quản lỷ và nâng cấp các thư viện có sẵn là tương đối phức tạp. Hãy thử tưởng tượng về một 1 project sử dụng GWT, Hibernate và Apache Lucence?

Tuy nhiên, những trở ngại nói trên hoàn toàn có thể giải quyết được nhờ vào Apache Maven. Vậy cụ thể nó là gì, tại sao nó lại có khả năng to lớn như vậy?

Khái niệm

Maven là một công cụ để quản lý project và việc build một cách tự động. Nó phục vụ chính cho các project viết bằng Java nhưng cũng có thể hỗ trợ cho các project khác viết bằng C#, Ruby, Scala.

Maven dùng khái niệm Project Object Model (POM) để mô tả việc build project, các thành phần phụ thuộc và các module. Nó định nghĩa trước các target cho việc khai báo task, trình biên dịch, đóng gói và thứ tự hoạt động để mọi việc diến ra tốt nhất. Maven tải các thư viện, plug-in từ 1 hoặc nhiều repositories. Cũng có thể upload các sản phẩm lên repository sau khi đã build xong.

Lợi ích của Maven

  • Tự động hóa toàn bộ quá trình release project : khởi tạo, cập nhật thư viện, build & test, release và tạo tài liệu mô tả.

Hãy thử tưởng tượng về 1 dự án lớn, trong đó các hàng chục các module làm các côngviệc khác nhau. Mỗi team phụ trách một module và quá trình phát triển các module: từ phân tích yêu cầu, đặc tả, đến phát triển, kiểm thử và release là đồng thời và độc lập. Nhưng các module này phụ thuộc vào nhau, cần thiết cho nhau để phát triển.

Ảnh

Tự động hóa toàn bộ qui trình release là yêu cầu hàng đầu

Chỉ cần 1 sự chậm trễ, sai lầm ở một công đoạn có thể làm đổ vỡ cả quá trình release của project. Cho nên việc tự động hóa toàn bộ là ưu tiên hàng đầu, nhờ đó là việc lên kế hoạch hiệu quả và chính xác hơn, việc tích hợp và triển khai cũng đơn giản hơn rất nhiều.

  • Tự động hóa quá trình test với các plugin : Toàn bộ quá trình test được tự động, từ đó các lỗi được phát hiện sớm hơn. Thậm chí lỗi có thể phát hiện ở giai đoạn phát triển, do các developer đều có thể chạy các test case một cách dễ dàng bằng Maven.

    • JUnit, TestNG – Unit test

    • Selenium, Canoo – Web GUI test

    • SoapUI – Web services tests

    • JMeter – Performances tests

Ảnh
Ảnh

selenium2.png

Ảnh





  • Quản lý các dependencies(các thư viện) trong project một các ưu việt : tự động cập nhật, mở rộng dễ dàng, đóng gói(có thể hiểu là phụ thuộc các thư viện bắc cầu)

  • Phân chia 1 project lớn thành các module nhỏ: từ đó cho phép làm việc đồng thời trên các module khác nhau, đồng thời vẫn tạo được tính thống nhất

  • Không phụ thuộc vào IDE: cho phép chuyển đổi tử Eclipse sang NetBeans,.. một cách dễ dàng

  • Hệ thống plugin phóng phú trong đó có cả Ant

Thực tế ứng dụng

Hiện nay, đã có rất nhiều các công ty chuyển sang dùng Maven do ý thức được sức mạnh của nó như một sự thay thế và bổ sung hoàn hảo cho Ant. Tuy nhiên Việt Nam, mới chỉ có một số công ty phần mềm nước ngoài tận dụng được lợi ích của nó: eXo platform SEA, KMS, Citigo....

So sánh với Apache Ant?

Ant là 1 công cụ rất mạnh và phổ biến với Java developer. Khác với Maven là 1 project management tool, Ant đơn thuần chỉ là 1 build tool. Chính nhờ vào ưu điểm đơn giản, dễ sử dụng mà đa số các developer đều sử dụng nó. Hơn nữa, trong khi Ant thích hợp cho mọi loại project, thi Maven lại chứng tỏ sức mạnh rõ rệt ở các project lớn và rất lớn nhằm giúp cho việc quản lý dễ dàng và thống nhất hơn. Ngoài ra Ant đến với developer trước(2000) so với Maven(2006) và tới nay nó vẫn còn rất hữu dụng.

Hướng dẫn cài đặt Maven

Bước 1 : Tải và c ài đặt Java JDK

Bước 2 : Cài đặt Maven

  1. Download phần mềm: http://maven.apache.org/download.html

  2. Unzip vào thư mục bạn muốn cài đặt, ở đây tôi chọn C:\apache-maven-2.2.1

  3. Right-click vào My Computer mở Properties. Mở tab Advanced và click vào nút Environment Variables. Thêm vào biến môi trường PATH dòng sau: C:\apache-maven-2.2.1 \bin

Ảnh
  1. Thiết lập biến môi trường sau: M2_HOME C:\apache-maven-2.2.1

Ảnh
  1. Thiết lập biến môi trường : M2 C:\apache-maven-2.2.1\bin

Ảnh
  1. Mở cmd, kiểm tra JAVA, Maven đã được cài đặt thành công và các biến môi trường đã được thiết lập đúng:

Ảnh

Lời kết

Hiện tại Apache đã release phiên bản Maven 3.0 với rất nhiều thay đổi quan trọng:

  • Hỗ trợ parralel build với các module và tối ưu hóa hệ thống

  • Cải tiến hiệu năng và khả năng tích hợp với các IDE

  • Tương thích 100% với các version trước đó

Bên cạnh đó cộng đồng và số lượng người dùng maven cũng ngày một lớn mạnh:

Ảnh

Hệ thống bài giảng và tài liệu phong phú:

Với sức mạnh to lớn và sự phát triển nhanh chóng, Maven chắc chắn sẽ giành được vị thể xứng đáng là tương lai của nền tảng build đối với các ứng dụng Java Enterprise trong 1 ngày không xa. Các developer, các bạn đã khởi đầu với Ant như là beginner, vậy hãy đến với Maven như một professional.

Ở bài viết sau, tôi sẽ trình bày cụ thể hơn cơ chế hoạt động của Maven thông qua về một ví dụ cụ thể với một nền tảng mở.

Mọi ý kiến đóng góp về bài viết xin gửi về địa chỉ hòm thư [email protected]

Lại Trung Hiếu - Kỹ sư phần mềm

Công ty eXo Platform SEA

Doanh nghiệp cung cấp giải pháp Cổng thông tin điện tử mã nguồn mở trên nền điên toán đám mây


Bình luận

  • TTCN (0)