Giới thiệu Spring Roo, Phần 1: Xây dựng từ nguồn

Spring Roo là một công cụ năng suất nhẹ cho công nghệ Java™, giúp nhanh chóng và dễ dàng phát triển các ứng dụng dựa trên Spring. Các ứng dụng được tạo ra bằng cách sử dụng Spring Roo theo các cách thực hành Spring tốt nhất và được dựa trên các tiêu chuẩn như JPA (Java persistence API – API tồn tại bền vững của Java), Bean Validation (JSR-303) và Dependency Injection (JSR-330). Roo cung cấp một trình vỏ (shell) hoàn thành bằng phím Tab, có nhận biết được ngữ cảnh, dễ sử dụng để xây dựng các ứng dụng. Spring Roo có khả năng mở rộng được và cho phép các phần bổ sung, nâng cao khả năng của mình. Bài này giới thiệu Spring Roo và cung cấp các hướng dẫn theo từng bước về xây dựng mã nguồn Spring Roo trên các hệ thống *nix và Windows®.

Shekhar Gulati, Nhà tư vấn cao cấp, Xebia

Shekhar Gulati là một nhà tư vấn Java làm việc với Xebia India. Ông có sáu năm kinh nghiệm làm việc trong lĩnh vực Java. Ông có nhiều kinh nghiệm trong các dự án danh mục Spring, ví dụ như Spring, Spring-WS, Spring Roo, v.v. Các mối quan tâm của ông là Spring, cơ sở dữ liệu NoSQL, Hadoop, khung công tác RAD như Spring Roo, điện toán đám mây (chủ yếu là các dịch vụ PaaS như Google App Engine, CloudFoundry, OpenShift), Hadoop. Ông là một tác giả năng động viết bài cho các trang Javalobby, Developer.com, IBM developerWorks và blog riêng của ông tại http://whyjava.wordpress.com/. Bạn có thể theo dõi ông trên twitter @ http://twitter.com/#!/shekhargulati.



31 10 2012

Giới thiệu

Khung công tác Spring đã được phát hành vào cuối năm 2002 để đơn giản hóa việc phát triển J2EE (bây giờ là JavaEE). Trong tám năm qua, Spring đã thực hiện thành công nhiệm vụ này bằng cách đưa ra các khung công tác hoặc các tính năng cộng đồng Java như Bảo mật Spring (Spring Security), Spring MVC (Spring Model-View-Controller - Bộ điều khiển Khung nhìn-Mô hình của Spring), quản lý giao dịch, bó Spring và tích hợp Spring, là dễ hiểu và dễ sử dụng hơn. Spring đã muốn làm cho nhà phát triển Java thực hiện dễ dàng hơn và hiệu quả hơn. Để thực hiện việc này, Spring đã tạo ra một công cụ phát triển được gọi là Spring Roo.

Spring Roo (xem phần Tài nguyên) là một công cụ RAD (Rapid Application Developer - Nhà phát triển ứng dụng nhanh chóng) nguồn mở dựa trên văn bản, mở rộng cho công nghệ Java. Nó là tài nguyên mạnh mẽ để tạo và quản lý các ứng dụng dựa trên Spring. Dưới đây là tuyên bố về nhiệm vụ:

Nhiệm vụ của Roo là để cải thiện cơ bản và bền vững năng suất cho nhà phát triển Java mà không ảnh hưởng đến tính toàn vẹn hoặc tính linh hoạt kỹ thuật.

Nhiệm vụ này được chuyển thành một công cụ được xây dựng trên công nghệ Java, làm tăng năng suất một cách bền vững trên toàn bộ vòng đời của một dự án và không gắn chặt các nhà phát triển vào một cách tiếp cận cụ thể. Spring Roo sử dụng các thư viện phổ biến, đã được chứng minh và hoàn thiện như khung công tác Spring, Java Persistence API (JPA), Java Server Pages (JSP), Spring Security, Spring Web Flow, Log4J và Maven. Các ứng dụng do Roo tạo ra đều sử dụng các tiêu chuẩn như Bean Validation (JSR-303) và Dependency Injection (JSR-330) và theo kiến trúc ứng dụng thực hành tốt nhất có chứng chỉ-SpringSource.

Khi sử dụng công cụ Spring Roo, bạn có thể bổ sung và cấu hình các tính năng như JPA, Spring MVC, Spring Security, Logging using Log4j (Ghi nhật ký bằng cách sử dụng Log4j), thử nghiệm các khung công tác như JUnit và Selenium, Solr, JMS (Java Message Service - Dịch vụ thông báo Java), email và nhiều hơn nữa, chỉ đơn giản bằng cách gõ lệnh vào trình vỏ Roo. Thời gian đã tiết kiệm được khi sử dụng Roo để bổ sung các tính năng này làm tăng năng suất của nhà phát triển. Roo không thể viết logic nghiệp vụ, nhưng nó có thể quản lý cơ sở hạ tầng hoặc cấu hình của một ứng dụng.

Roo là một công cụ trong thời gian phát triển, có nghĩa là một ứng dụng độc lập của Roo trong thời gian chạy. Như Roo không tồn tại trong thời gian chạy, nó không có bất kỳ tiêu tốn hoạt động bộ nhớ hay hiệu năng nào. Điều này đảm bảo rằng bạn không gắn chặt với Spring Roo và bạn có thể loại bỏ Roo khỏi dự án don't knocủa mình bất kỳ thời điểm nào bằng một vài nhấn phím.

Bài này thảo luận về việc xây dựng một ứng dụng web đơn giản bằng cách sử dụng trình vỏ Roo và trình bày cách xây dựng mã nguồn Spring Roo trên các máy tính Windows hoặc Ubuntu.


Bắt đầu với trình vỏ Roo

Bạn có thể quản lý và cấu hình một ứng dụng bằng cách tải trình vỏ Roo và tương tác với nó bằng cách sử dụng các lệnh. Trình vỏ Roo là trình vỏ lệnh có gợi ý, nhận biết ngữ cảnh, hoàn thành bằng phím tab. Bạn có thể sử dụng các lệnh gợi ý để hỏi Spring Roo về hành động logic tiếp theo của mình. Roo đủ thông minh để đề xuất các hành động tiếp theo bằng cách xác định ngữ cảnh của ứng dụng của bạn. Ví dụ, hãy nói rằng bạn đã tạo ra một thực thể bằng cách sử dụng lệnh entity (tạo thực thể). Sau đó, bạn gõ lệnh hint (gợi ý). Roo sẽ cho bạn biết là bạn cần thêm các trường cho thực thể của bạn bằng cách sử dụng lệnh field (tạo trường). Tính năng này làm giảm trọng số dựa theo khái niệm của Roo và làm cho nó trở thành một công cụ học tập rất tốt. Bạn có thể tạo ra ứng dụng đầy đủ sau lệnh help (trợ giúp) và lệnh hint của Roo mà không bao giờ cần tham khảo tài liệu hướng dẫn của nó.

Các điều kiện tiên quyết

Trước khi bạn bắt đầu làm việc với Roo, hãy chắc chắn bạn đã có các thứ sau đây đã cài đặt:

  1. Java V6 JDK (Java Software Development Kit - Bộ công cụ phát triển phần mềm Java).
  2. Apache Maven V2.0.9 hoặc cao hơn.

Cài đặt Spring Roores

Để cài đặt Spring Roo độc lập:

  1. Bạn có thể tải về trình vỏ dòng lệnh độc lập của Roo hoặc sử dụng trình cắm thêm STS (SpringSource Tool Suite - Bộ công cụ SpringSource) dựng sẵn của Roo. Tôi muốn đề nghị bạn tải về cả hai và sử dụng chúng cùng nhau vì STS cung cấp nhiều tính năng bổ sung trên Eclipse cho các ứng dụng dựa trên-Spring.
    1. Spring Roo
    2. SpringSource Tool Suite
  2. Giải nén Spring Roo đến vị trí đã chọn của bạn.
  3. Thiết lập biến môi trường:
    1. Trên một máy tính Windows, thêm %ROO_HOME% /bin vào đường dẫn nơi có ROO_HOME là đường dẫn đến các tệp giải nén của Roo.
    2. Trên một máy tính *nix hãy tạo ra một liên kết ký hiệu đến $ROO_HOME/bin/roo.sh

      (ví dụ, sudo ln -s ~/spring-roo-1.x.x/bin/roo.sh /usr/bin/roo)

Xây dựng một ứng dụng

Để hiển thị cho bạn sức mạnh của Roo, hãy tạo ra một ứng dụng hội nghị doanh nghiệp đơn giản. Một ứng dụng hội nghị có hai thực thể: Người nói (Speaker) và Cuộc thảo luận (Talk). Một Người nói có thể đưa ra một hoặc nhiều Cuộc thảo luận và một Cuộc thảo luận sẽ chỉ do một người nói đưa ra. Biểu đồ lớp đơn giản được hiển thị trong Hình 1.

Hình 1. Speaker Talk của Biểu đồ lớp
Biểu đồ hiển thị các phần tử cho Speaker (firstName, lastName, etc.) được gắn với các phần tử Talk (title và description)

Tạo ứng dụng:

  1. Mở trình vỏ dòng lệnh của hệ điều hành của bạn.
  2. Tạo một thư mục có tên conference (hội nghị) bằng cách sử dụng lệnh tạo thư mục mkdir.
  3. Chuyển đến thư mục conference trong trình vỏ của bạn.
  4. roo. Lệnh này sẽ khởi động trình vỏ Roo như trong Liệt kê 1.
Liệt kê 1. Khởi động trình vỏ Roo
C:\Users\xebia\demo\conference>roo
    ____  ____  ____
   / __ \/ __ \/ __ \
  / /_/ / / / / / / /
 / _, _/ /_/ / /_/ /
/_/ |_|\____/\____/       1.1.B.RELEASE [rev 793f2b0]
Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
roo>

Bây giờ chúng ta ở trong trình vỏ Roo, chúng ta sẽ sử dụng lệnh hint của Roo để hướng dẫn chúng ta qua các bước tiếp theo. Lệnh hint gợi ý tạo ra một dự án Spring dựa trên-Maven mới bằng cách sử dụng lệnh project (tạo dự án) (xem Liệt kê 2).

Liệt kê 2. Sử dụng lệnh hint trong trình vỏ Roo
Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
roo> hint
Welcome to Roo! We hope you enjoy your stay!
Before you can use many features of Roo, you need to start a new project.

To do this, type ’project’ (without the quotes) and then hit TAB.

Enter a --topLevelPackage like ’com.mycompany.projectname’ (no quotes).
When you're finished completing your --topLevelPackage, press ENTER.
Your new project will then be created in the current working directory.

Note that Roo frequently allows the use of TAB, so press TAB regularly.
Once your project is created, type ’hint’ and ENTER for the next suggestion.
You're also welcome to visit http://forum.springframework.org`for Roo help.
roo>

Như lệnh hint đã gợi ý, chúng ta sẽ tạo ra một dự án bằng cách sử dụng lệnh project. Lệnh này có một thuộc tính bắt buộc, là topLevelPackage, để chỉ rõ tên của gói phần mềm gốc. Ngoài thuộc tính bắt buộc, chúng ta sẽ sử dụng hai thuộc tính tùy chọn : java (để xác định phiên bản Java) và projectName (để quy định tên của dự án). Hãy gõ như sau:

	project --topLevelPackage com.dw.roo.conference --java 6 --projectName conference

Lệnh này sẽ tạo ra một dự án dựa trên Spring do Maven V2 quản lý như hiển thị trong kết quả sau:

	Created C:\Users\xebia\demo\conference\pom.xml
	Created SRC_MAIN_JAVA
	Created SRC_MAIN_RESOURCES
	Created SRC_TEST_JAVA
	Created SRC_TEST_RESOURCES
	Created SRC_MAIN_WEBAPP
	Created SRC_MAIN_RESOURCES\META-INF\spring
	Created SRC_MAIN_RESOURCES\META-INF\spring\applicationContext.xml
	Created SRC_MAIN_RESOURCES\log4j.properties

Một lần nữa, gõ lệnh hint để hỏi Roo về hành động tiếp theo. Lúc này, nó gợi ý thiết lập cơ chế bền vững. Gõ persistence setup (thiết lập bền vững) trên trình vỏ và nhấn phím Tab ba lần. Bạn sẽ có được các tùy chọn với --provider (trình cung cấp). Ấn phím H, rồi ấn phím Tab để nhận được "HIBERNATE". Sau provider, ấn phím tab để có các lựa chọn cơ sở dữ liệu và bạn sẽ thấy một số các tùy chọn. Do chúng ta đang sử dụng Hibernate là nhà cung cấp dịch vụ của mình, nên chúng ta không thể chọn một cơ sở dữ liệu không quan hệ như Google App Engine (Công cụ ứng dụng Google). Bây giờ, chúng ta sẽ sử dụng cơ sở dữ liệu HYPERSONIC_IN_MEMORY.

	persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY

Có các thuộc tính tùy chọn khác, chẳng hạn như tên người dùng và mật khẩu, mà chúng ta không cần vào lúc này.

Bây giờ chúng ta đã thiết lập cơ chế bền vững, chúng ta sẽ sử dụng lại lệnh hint. Lúc này, chúng ta được gợi ý tạo ra các thực thể bằng cách sử dụng lệnh tạo thực thể entity. Lệnh Entity được sử dụng để tạo các đối tượng miền thực tế và có một thuộc tính bắt buộc, là class, để chỉ rõ tên của thực thể đó. Ngoài thuộc tính --class bắt buộc, chúng ta sẽ sử dụng thuộc tính --testAutomatically, để tạo ra các bài kiểm tra tích hợp cho một đối tượng miền. Hãy tạo ra hai thực thể là Speaker và Talk.

	entity --class ~.domain.Speaker -–testAutomatically
	
	entity --class ~.domain.Talk --testAutomatically

Tôi đã sử dụng ~ làm một trình giữ chỗ cho gói mức cao nhất của dự án.

Lệnh Entity sẽ tạo ra một thực thể JPA có rất nhiều tính năng, linh hoạt. Các thực thể được tạo ra sẽ có JPA @Entity với ID (mã định danh), phiên bản, EntityManager (Trình quản lý thực thể) và một hàm tạo không có đối số. Thực thể được tạo ra sẽ có các phương thức như persist (bền vững), merge (kết hợp), remove (loại bỏ), flush (gửi ngay nội dung bộ đệm), count (đếm), find (tìm) và findById (tìm theo ID), v.v.. Nếu bạn xem xét kết quả đầu ra của lệnh này, bạn sẽ thấy rằng lệnh này, ngoài việc tạo ra các tệp Java (cho Speaker và Talk), cũng đã tạo ra các tệp AspectJ mã hóa bằng *Roo_*.aj. *Roo_*.aj này được gọi là ITD (Intertype Declaration – Khai báo giữa các kiểu), Mixins hoặc Introductions (Các hướng dẫn). Roo sử dụng ITD như một tạo phẩm tạo-mã. Các ITD cho phép Roo tạo mã trong một đơn vị biên dịch riêng biệt, nhưng các ITD được kết hợp thành lớp đã biên dịch giống nhau trong lúc biên dịch. Các khai báo giữa các kiểu của AspectJ được sử dụng để tự động tạo ra ID và các trường phiên bản và các getter và các setter cho các trường bền vững trong các lớp miền.

Việc sử dụng lại lệnh hint đưa ra gợi ý bổ sung các trường cho thực thể khi sử dụng lệnh field. Hãy thêm một số trường vào thực thể Speaker:

	field string --fieldName firstname --class ~.domain.Speaker --notNull 
	field string --fieldName lastname --notNull 
	field string --fieldName email --unique --notNull 
	field string --fieldName organization 
	field date --fieldName birthdate --type java.util.Date --past --notNull 
	field number --type java.lang.Long --fieldName age --min 25 --max 60

Các tùy chọn --class cho phép chúng ta chỉ rõ chúng ta muốn thêm các trường vào lớp nào.

Có thể sử dụng lệnh field để quy định các chú thích đặc trưng-xác nhận hợp lệ của JavaBean với các tùy chọn như --max--min, v.v.. Nó cũng có thể được sử dụng để quy định các chú thích đặc trưng JPA với các tùy chọn như --fetch, --column--unique, v.v.. Đối với các trường ngày tháng, bạn cũng có thể quy định có nên là các ngày trong quá khứ hoặc tương lai như đã sử dụng ở trên không. Khi sử dụng lệnh field, bạn không phải nhớ các chú thích này.

Bây giờ chúng ta hãy thêm một số trường vào thực thể Talk:

	field string --fieldName title --class ~.domain.Talk --notNull 
	field string --fieldName description --notNull --sizeMax 4000

Cho đến nay, chúng ta đã tạo ra các thực thể và đã bổ sung các trường cho chúng, nhưng chúng ta vẫn chưa quy định mối quan hệ giữa chúng. Mối quan hệ giữa Speaker và Talk là ONE_TO_MANY (tức là, một người nói có thể cung cấp bất kỳ số lượng các cuộc thảo luận nào). Điều này được thực hiện khi sử dụng lệnh field, như sau:

	field set --fieldName talks --type ~.domain.Talk --class \
~.domain.Speaker --cardinality ONE_TO_MANY
	
	field reference --fieldName speaker --type ~.domain.Speaker \
--class ~.domain.Talk –-notNull

Bây giờ chúng ta sẽ muốn dựng lên một tầng web cho ứng dụng hội nghị. Điều này được thực hiện khi sử dụng lệnh controller (Tạo bộ điều khiển). Cách thuận tiện nhất để tạo ra các bộ điều khiển và tất cả các tạo phẩm web liên quan là sử dụng lệnh controller all.

	controller all --package ~.web

Việc sử dụng lệnh controller lần đầu cũng sẽ bổ sung thêm nhiều phụ thuộc nữa, ví dụ như Spring MVC và Tiles vào dự án của bạn. Điều này có thể mất một chút thời gian để chạy vì nó phải tải về tất cả các phụ thuộc (nếu chúng vẫn chưa có trong kho lưu trữ Maven của bạn). Lệnh này cũng cho thấy một trong các tính năng của Roo: nó bổ sung các phụ thuộc chỉ khi cần chúng.

Tiếp theo, chúng ta sẽ thiết lập lệnh logging (ghi nhật ký) sử dụng log4j:

	logging setup --level INFO --package ALL_SPRING

Điều cuối cùng mà chúng ta nên làm trước khi thoát khỏi trình vỏ Roo là chạy các bài kiểm tra tích hợp đã được tạo ra khi chúng ta đã quy định --testAutomatically với lệnh entity. Để chạy các bài kiểm tra từ bên trong trình vỏ, hãy gõ lệnh perform tests (thực hiện các bài kiểm tra).

Roo ủy thác cuộc gọi đến Maven để chạy các bài kiểm tra này, do đó, lệnh perform tests tương đương với một lệnh mvn test (kiểm tra mvn). Gõ q hay quit để thoát khỏi trình vỏ này.

Những lệnh này sẽ tạo ra một ứng dụng hội nghị đầy đủ chức năng. Tiếp theo chúng ta sẽ chạy ứng dụng này.

Để chạy ứng dụng này, hãy gõ lệnh mvn tomcat:run để khởi động máy chủ jetty. Mở một trình duyệt web và chuyển đến địa chỉ http://localhost:8080/conference/. Bạn sẽ thấy màn hình như trong Hình 2.

Hình 2. Trang chủ ứng dụng hội nghị
Ảnh chụp ứng dụng hội nghị trong một trình duyệt với các mục trình đơn ở dưới phía trái và nội dung ở phía phải

Bạn có thể nhấn chuột vào Create new Speaker (Tạo Người nói mới) để tạo ra một người nói tại hội nghị. Bạn cũng có thể xem, chỉnh sửa và xóa một người dùng bằng cách nhấn vào List all Speakers (Danh sách tất cả những người nói). Theo cách tương tự, bạn có thể tạo ra một Cuộc thảo luận (Talk), nhưng không phải trước khi tạo một Người nói (Speaker).

Đây là một ứng dụng đơn giản, nhưng nó cho thấy bạn có thể tạo ra một ứng dụng web mới dựa trên Spring dễ đến mức nào ngay từ đầu chỉ trong vài phút. Trong phần thứ hai của loạt bài này, tôi sẽ cho bạn thấy cách xây dựng một ứng dụng bằng cách sử dụng các tính năng và các phần bổ sung Roo khác nhau.

Bây giờ chúng ta đã tạo ra một ứng dụng đơn giản, tôi sẽ cho thấy bạn có thể xây dựng mã nguồn Spring Roo trên Windows và Ubuntu như thế nào.


Xây dựng Spring Roo từ mã nguồn

Spring Roo V1.1.0 là phiên bản phát hành sản phẩm mới nhất và sự phát triển năng động đang diễn ra trong bản phát hành V1.1.1. Có nhiều lý do là tại sao bạn có thể yêu cầu xây dựng Spring Roo từ mã nguồn:

  1. Spring Roo không cung cấp các nightly build (quá trình xây dựng trung lập được thực hiện tự động), vì vậy nếu bạn cần những tính năng mới nhất của Spring Roo, bạn cần phải xây dựng mã nguồn của Spring Roo.
  2. Bạn muốn làm bất kỳ phần phát triển nào cho dự án Spring Roo.
  3. Bạn muốn viết một phần bổ sung cho Spring Roo.
  4. Bạn chỉ muốn thử nghiệm với mã Spring Roo để xem cách thực hiện hoặc viết nó.

Kết quả

Đến cuối phần này, bạn sẽ có thể chạy một bản xây dựng Maven thành công của mã nguồn Spring Roo mới nhất trên cả hệ thống Windows lẫn hệ thống *nix. Bạn sẽ có thể làm việc với công cụ Spring Roo mới nhất và có thể nhập khẩu các dự án Spring Roo vào Eclipse hoặc STS (SpringSource Tool Suite).

Quá trình xây dựng mã nguồn Spring Roo trên Ubuntu

Việc xây dựng mã nguồn trên Ubuntu (và hệ thống *nix khác) rất dễ dàng. Chỉ cần làm theo các bước sau:

  1. Cài đặt Git, một hệ thống quản lý kiểm soát mã nguồn phân tán. Để cài đặt nó trên hệ thống Ubuntu của bạn, hãy gõ sudo apt-get install git-core gitk.
  2. Kiểm tra Spring Roo khi dùng Git bằng cách gõ git clone git://git.springsource.org/roo/roo.git. Bạn sẽ thấy một thư mục roo trong thư mục chủ của bạn có chứa tất cả các mã nguồn Roo.
  3. GnuPG cho phép mã hóa và ký dữ liệu và truyền thông của bạn và mô tả một hệ thống quản lý khóa linh hoạt và các mô đun truy cập cho tất cả các kiểu thư mục khóa công khai. Roo sử dụng GPG để ký tự động kết quả đầu ra xây dựng.
  4. Bắt đầu lệnh gpg --list-secret-keys. Kết quả đầu ra sẽ xuất hiện tương tự như Liệt kê 3.
    Liệt kê 3. Kết quả của lệnh gpg list
    C:\dev\roo-sourcecode\roo>gpg --1ist-secret-keys
    C:/Users/xebia/AppData/Roaming/gnupg\secring.gpg
    sec 2048R/2F96093B 2010-07-03
    uid                shekhar (spring-roo) <shekhargu1ati84@gmai1.com>
    ssb 2048R/B77E5C63 2010-07-03
    C:\dev\roo-sourcecode\roo>_
  5. Nếu bạn không thấy kết quả đầu ra, trước hết phải tạo một khóa. Sử dụng lệnh gpg –gen-key, nó sẽ hướng dẫn bạn qua một loạt các bước để tạo một khóa. Sau đó kiểm tra xem khóa mới được tạo ra của bạn đã được tạo ra chưa bằng cách sử dụng lệnh gpg –list-secret-keys.
  6. Tiếp theo, bạn cần phải xuất bản khóa của bạn đến một máy chủ khóa công khai. Hãy lưu ý về ID của khóa sec được hiển thị từ –list-secret-keys. Trong trường hợp của tôi, đó là ID của khóa 2F96093B. Cung cấp khóa công khai của bạn cho một máy chủ khóa thông qua gpg –keyserver hkp://pgp.mit.edu –send-keys 2F96093B (thay đổi ID khóa ở cuối).
  7. Một số mô-đun Roo yêu cầu các tệp lưu trữ Java (JAR) vẫn chưa có trong biểu mẫu OSGi. Đó là, chúng không có một bản kê nhận biết-OSGi. Roo có một dự án đặc biệt tên là wrapping có thể chuyển đổi các JAR bình thường thành các JAR OSGi. Bạn sẽ cần chạy trình bao bọc (wrapper) trước khi cố gắng làm việc với Roo. Nếu không có trình bao bọc này, bạn sẽ thấy các lỗi nói rằng Maven không thể tìm thấy org.springframework.roo.wrapping.some_module. Để tạo ra các JAR được bao bọc, từ vị trí kiểm tra Roo gốc, gõ:
    	cd wrapping
    	mvn clean install 
    	cd..
  8. Tiếp theo, chạy lệnh mvn clean install. (Maven V2 nên được cài đặt trên hệ thống của bạn. Nếu chưa có, hãy cài đặt nó ngay bây giờ). Maven sẽ nhắc bạn nhập mật khẩu/cụm từ mật khẩu khóa của bạn (bạn đã nhập cụm từ mật khẩu trong khi tạo khóa GPG) mỗi khi bạn xây dựng mã nguồn. Gõ cụm từ mật khẩu và nhấn Enter. Sẽ mất một vài phút để xây dựng mã nguồn.

Quá trình xây dựng mã nguồn Spring Roo trên Windows

Việc xây dựng mã nguồn trên Windows có một chút khó khăn hơn so với Ubuntu. Hãy làm theo các bước sau:

  1. Cài đặt Git, một hệ thống quản lý kiểm soát mã nguồn phân tán. Để bắt đầu quá trình, bạn cần phải cài đặt Git trên máy tính Windows của bạn. Tôi đã cài đặt msysGit trên máy tính Windows của mình. Nếu bạn đã cài đặt Git, bạn có thể bỏ qua bước này. Khi bạn cài đặt msysGit, nó sẽ yêu cầu một vị trí cài đặt. Nó sẽ mở một dấu nhắc lệnh và bắt đầu thực hiện rất nhiều lệnh. việc này sẽ diễn ra trong một phút hoặc lâu hơn. Sau khi cài đặt, bạn sẽ thấy một màn hình như trong Liệt kê 4.
    Liệt kê 4. Cài đặt msysGit
            { test "$bindir/" = "$execdir/" || \
                   { rm -f "$execdir/git.exe" && \
                   test -z "" &amp;&amp; \
                   ln "$bindir/git.exe" "$execdir/git.exe" 2>/dev/null || \
                   cp "$bindir/git.exe" "$execdir/git.exe"; } ; } && \
            { for p in git-add.exe git-annotate.exe git-apply.exe git-archive.exe 
    git-bisect--helper.exe git-blame.exe git-branch.exe git-bundle.exe git-cat-file.exe 
    git-check-attr.exe git-check-ref
                    rm -f "$execdirf$p" && \
                    ln "Sexecdir/git.exe" "Sexecdir/$p" 2>/dev/null ll \
                    ln -s "git.exe" "$execdir/$p" 2>/dev/null || \
                    cp "Sexecdir/git.exe" "$execdir/$p" Il exit; \
             done; } && \
            { test x"git-renote-https.exe git-renote-ftp.exe \
    git-renote-ftps.exe" = x ll \
                    { for p in git-remote-https.exe git-remote-ftp.exe \
    git-remote-ftps.exe; do \
                    rm -f "$execdir{$p" && \
                    ln "Sexecdir/git-remote-http.exe" "$execdir/$p" 2>/dev/null ll \
                    ln -s “git-renote—http.exe" "$execdir/$p" 2>/dev/null || \
                    cp "Sexecdir/git-remote-http.exe" "Sexecdir/$p" ll exit; \
              done; } ; } && \
            ./check_bindir "z$bindir" "z$execdir" "Sbindir/git—add.exe"
    
    -------------------------
    Hello, dear Git developer.
    
    This is a minimal MSYS environment to work on Git.
    
    You are in the git working tree, and all is ready for you to hack.
    
    Welcome to msysGit
    
    Run 'git help git' to display the help index.
    Run 'git help <command>' to display help for specific commands.
    Run '/share/msysGit/add-shortcut.tcl' to add a shortcut to msysGit.
    
    It appears that you installed msysGit using the full installer.
    To set up the Git repositories, please run /share/msysGit/initialize.sh
  2. Thiết lập biến môi trường Git. Bắt buộc thiết lập Git trong đường dẫn Windows của bạn. Thêm ${MSYSGIT}\msysgit\bin và {MSYSGIT}\msysgit\mingw\bin vào đường dẫn Windows của bạn, ở đây ${MSYSGIT} là vị trí cài đặt msysGit. Mở một dấu nhắc lệnh mới và nhập vào git. Bạn sẽ thấy đầu ra trong Liệt kê 5.
    Liệt kê 5. Dấu nhắc lệnh Git
    C:\>git
    usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path]
               [-pl--paginate|I--no-pager] [--no-replace-objects]
               [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
               [-c name=value
               [--help] COMMAND [ARGS]
    The most commonly used git commands are:
       add        Add file contents to the index
       bisect     Find by binary search the change that introduced a bug
       branch     List, create, or delete branches
       checkout   Checkout a branch or paths to the working tree
       clone      Clone a repository into a new directory
       commit     Record changes to the repository
       diff       Show changes between commits, commit and working tree, etc
       fetch      Download objects and refs from another repository
       grep       Print lines matching a pattern
       init       Create an empty git repository or reinitialize an existing
       log        Show commit logs
       merge      Join two or more development histories together
       mv         Move or rename a file, a directory, or a symlink
       pull       Fetch from and merge with another repository or a local bra
       push       Update remote refs along with associated objects
       rebase     Forward-port local commits to the updated upstream head
       reset      Reset current HEAD to the specified state
       rm         Remove files from the working tree and from the index
       show       Show various types of objects
       status     Show the working tree status
       tag        Create, list, delete or verify a tag object signed with GPG
    
    See ’git help COMMAND’ for more information on a specific command.
    C:\>_
  3. Kiểm tra Spring Roo bằng cách sử dụng Git. Trong bước này, bạn sẽ tạo ra một bản sao cục bộ của Spring Roo bằng cách kiểm tra mã nguồn mới nhất khi sử dụng Git. Mở một dấu nhắc lệnh và chuyển đến vị trí ở đó bạn muốn để kiểm tra Spring Roo. Nhập lệnh git clone git://git.springsource.org/roo/roo.git. Chờ cho đến khi kết thúc lệnh này. Lệnh này sẽ tạo ra một thư mục mới có tên là roo tại vị trí ở đó bạn kiểm tra Spring Roo.
  4. Tải về và cài đặt GPG cho Windows. GnuPG là công cụ của GNU để giao tiếp bảo mật và lưu trữ dữ liệu. Có thể sử dụng nó để mã hóa dữ liệu và để tạo ra các chữ ký số. Roo sử dụng GPG để ký tự động các kết quả đầu ra xây dựng. Một khi bạn đã cài đặt GPG, hãy sử dụng lệnh gpg –list-secret-keys. Bạn sẽ thấy kết quả đầu ra tương tự như Liệt kê 6.
    Liệt kê 6. Kết quả của lệnh gpg list
    C:\dev\roo-sourcecode\roo>gpg --1ist-secret-keys
    C:/Users/xebia/AppData/Roaming/gnupg\secring.gpg
    sec 2048R/2F96093B 2010-07-03
    uid                shekhar (spring-roo) <shekhargu1ati84@gmai1.com>
    ssb 2048R/B77E5C63 2010-07-03
    C:\dev\roo-sourcecode\roo>_
  5. Nếu bạn không thấy kết quả đầu ra này, có nghĩa là trước tiên bạn cần tạo ra một khóa. Hãy sử dụng lệnh gpg –gen-key. Nó sẽ hướng dẫn bạn qua một loạt các bước để tạo ra một khóa. Sau đó kiểm tra xem khóa mới được tạo của bạn đã được tạo ra chưa bằng cách sử dụng gpg –list-secret-keys.
  6. Xuất bản khóa của bạn đến một máy chủ khóa công khai. Hãy lưu ý ID khóa sec được hiển thị từ –list-secret-keys. Trong trường hợp của tôi, đó là ID 2F96093B. Cung cấp khóa công khai của bạn cho một máy chủ khóa thông qua gpg –keyserver hkp://pgp.mit.edu –send-keys 2F96093B. (Thay đổi ID khóa ở cuối).
  7. Trước tiên hãy xây dựng dự án trình bao bọc (wrapper). Một số mô-đun Roo yêu cầu các JAR vẫn chưa có trong biểu mẫu OSGi. Đó là, chúng không có một bản kê nhận biết-OSGi. Roo có một dự án đặc biệt tên là wrapping có thể chuyển đổi các JAR bình thường thành các JAR OSGi. Bạn sẽ cần chạy trình bao bọc (wrapper) trước khi cố gắng làm việc với Roo. Nếu không có trình bao bọc, bạn sẽ thấy các lỗi nói rằng Maven không thể tìm thấy org.springframework.roo.wrapping.some_module. Để tạo ra các JAR được bao bọc, từ vị trí kiểm tra Roo gốc, gõ:
    	cd wrapping
    	mvn clean install 
    	cd..
  8. Chạy lệnh mvn clean install. (Maven V2 nên được cài đặt trên hệ thống của bạn, nếu chưa có, hãy cài đặt nó ngay bây giờ). Maven sẽ nhắc bạn nhập mật khẩu/cụm từ mật khẩu khóa của bạn (bạn đã nhập cụm từ mật khẩu trong khi tạo khóa GPG) mỗi khi bạn xây dựng mã nguồn. Gõ cụm từ mật khẩu và nhấn Enter. Sẽ mất một vài phút để xây dựng mã nguồn.
  9. Thiết lập các biến môi trường ROO-DEV trong các thiết lập hệ thống của bạn, các thiết lập này trỏ đến thư mục bootstrap (tự khởi động) trong dự án Roo. Bạn cũng nên thêm biến này vào biến môi trường PATH, như trong Hình 3.
Hình 3. Thiết lập biến ROO-DEV
Ảnh chụp màn hình hiển thị hộp nhập Chỉnh sửa biến hệ thống - Edit System Variable

Bây giờ bạn có thể làm việc với phiên bản phát triển mới nhất của Roo. Mở dấu nhắc lệnh, tạo một thư mục mới được gọi là mkdir roo_dev_demo và thực hiện lệnh roo-dev. Bạn sẽ thấy màn hình như trong Liệt kê 7.

Liệt kê 7. Trình vỏ ROO-DEV
C:\Users\xebia\demo\conference>roo
    ____  ____  ____
   / __ \/ __ \/ __ \
  / /_/ / / / / / / /
 / _, _/ /_/ / /_/ /
/_/ |_|\____/\____/       1.1.B.RELEASE [rev 793f2b0]
Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
roo>

Bạn có thể muốn cập nhật mã nguồn Spring Roo để cho bạn làm việc với phiên bản mới nhất của Spring Roo. Mở một dấu nhắc lệnh và chuyển đến vị trí mã nguồn của Spring Roo. Bắt đầu lệnh git pull, nó sẽ kéo tất cả các thay đổi từ xa vào bản sao cục bộ của bạn và sau đó thực hiện lệnh mvn clean install để xây dựng các nguồn được cập nhật.


Kết luận

Lúc này, chúng ta đã xây dựng một ứng dụng web đơn giản mà không cần mở trình soạn thảo của mình hoặc tham khảo bất kỳ tài liệu hướng dẫn nào. Ứng dụng này cho phép bạn thực hiện các hoạt động CRUD trên các thực thể. Tôi hy vọng bạn thấy rằng Roo giúp tăng năng suất thật sự cho các nhà phát triển Java. Nó sử dụng các công nghệ hoàn thiện và ổn định mà hầu hết các nhà phát triển đã biết.

Trong Phần 2, chúng ta sẽ thực hiện ứng dụng của mình an toàn hơn, thêm hỗ trợ quốc tế, thêm hỗ trợ thông báo (SMTP và JMS) và tùy chỉnh ứng dụng này. Chúng ta cũng sẽ xem xét một tính năng về kỹ thuật đảo ngược cơ sở dữ liệu của Roo và chuyển đổi ứng dụng này sang một ứng dụng doanh nghiệp đầy đủ tính năng.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

Thảo luận

  • Tham gia vào các blog developerWorks và dành tâm trí cho cộng đồng developerWorks.
  • Dành tâm trí cho cộng đồng developerWorks. Kết nối với những người dùng developerWorks khác trong khi khám phá các blog, các diễn đàn, các nhóm và các wiki dựa vào-nhà phát triển.

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Nguồn mở, Công nghệ Java
ArticleID=843737
ArticleTitle=Giới thiệu Spring Roo, Phần 1: Xây dựng từ nguồn
publish-date=10312012