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

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.

pdf13 trang | Chia sẻ: lylyngoc | Lượt xem: 1658 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Giới thiệu Spring Roo, Phần 1: Xây dựng từ nguồn, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Giới thiệu Spring Roo, Phần 1: Xây dựng từ nguồn 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. Về đầu trang 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. a. Spring Roo b. 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: a. 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. b. 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 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. Gõ 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 `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 và --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 và --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ỉ 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ị 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. Về đầu trang 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) 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 "" && \ 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